Как добавить пользовательскую утилиту / модуль в YUI3 - PullRequest
1 голос
/ 29 ноября 2011

Я хотел бы зарегистрировать пользовательскую утилиту / модуль в YUI3, которой передан один или несколько пользовательских узлов и которые можно вызывать так (без необходимости создания экземпляра):

YUI().use('myCustomModule', function (Y) {
 Y.one('nodeToProcess').myCustomUtility(config);
 Y.all('manyNodes').myCustomUtility(config);
});

JQuery предлагает аналогичную функциональность.

Я знаю, что пользовательский модуль в YUI3 определяется следующим образом:

YUI.add('myCustomModule', function(Y) {
// my Code here
}, '0.1', {
requires : ['node']
});

Но я не понимаю, как настроить свой пользовательский модуль, чтобы я мог называть его следующим образом:описано.Нужно ли расширять класс Plugin / Widget или использовать Y.Namespace (), чтобы заставить это работать?(см. http://www.slideshare.net/caridy/building-yui-3-custom-modules)

1 Ответ

3 голосов
/ 29 ноября 2011

Вы можете попробовать это:

<!doctype html>
<head>
    <meta charset="utf-8">
    <script src="http://yui.yahooapis.com/3.4.1/build/yui/yui-min.js"></script>
    <script>
YUI.add('joiz', function(Y) {

    function joizMagic(context, config) {
        alert(config.name + ' says: "' + this.getContent() + '"');
    }

    // define a function that will run in the context of a
    // Node instance:
    Y.Node.addMethod("joizMagic", joizMagic);

    // extend this functionality to NodeLists:
    Y.NodeList.importMethod(Y.Node.prototype, "joizMagic");

}, '0.1.1' /* module version */, {
    requires: ['node']
});
YUI().use('joiz', function (Y)
{
    Y.all('.message').joizMagic({ name: 'Beatrice' });
});
    </script>
</head>
<body>
    <div class="message">Hello World!</div>
    <div class="message">I'm still here!</div>
</body>
</html>
...