вопрос по yui3 JS - PullRequest
       17

вопрос по yui3 JS

0 голосов
/ 17 декабря 2010

У меня есть 2 разных файла JS: A.js и B.js.A.js выглядит примерно так:

YUI.use('a few modules',function(Y) {
var Spinner=function(config) {
//invoke a constructor
}
Spinner.NAME='spinnerobject';
Spinner.ATTRS={
status:{
value:false
,readonly:true
,broadcast:2
}
};
Y.extend(Spinner,Y.Base, {
initializer: 
//many initializers here
, this.setstatus: function() {
//sets the status variable appropriately
}
});
});

B.js это:

YUI.use('a few modules',function(Y) {
var button_yui2 = Y.YUI2.widget.Button( { initializing parameters for button}
);
button_yui2.on('change',function(e){
spinnerobject.setstatus(); // call made to a function in A.js
});

Я не могу вызвать функцию setstatus из B.js.Функция не выполняется вообще.Хотя ошибки не выдается.В чем может быть проблема с этим?

1 Ответ

2 голосов
/ 19 декабря 2010

есть куча вещей, которые не имеют смысла с кодом, который вы разместили.где вы создаете экземпляр спиннеробъекта?Я постараюсь помочь, основываясь на том, что, я думаю, вы пытаетесь сделать.

Прежде всего, вы никогда не регистрируете компонент счетчика в системе.в a.js вы объявляете var spinner внутри функции YUI.use.Это делает невозможным доступ извне к yui.use.вам нужно либо использовать yui.add вместо yui.use, либо поставить Y.namespace ('myNS'). Spinner = Spinner;как последняя строка a.js.Это сделает ваш компонент счетчика глобально доступным как Y.myNS.Spinner.

далее, инициализатор должен быть функцией:

Y.extend(Spinner, Y.Base, {
    initializer: function(cfg) {
        // do your init stuff here
    }
});

, а setstatus должен быть просто членом свойств прототипаобъект передан для расширения

Y.extend(Spinner, Y.Base, {
    initializer: function(cfg) {
        // do your init stuff here
    },

    setstatus: function() {
        // set status
    }
});

Так что теперь в b.js вы можете инициализировать новый объект счетчика

YUI.use('a few modules',function(Y) {
    var button_yui2 = new Y.YUI2.widget.Button({initializing parameters for button}),
        spinnerobject = new Y.myNS.Spinner({/*config object*/});

    button_yui2.on('change',function(e){
        spinnerobject.setstatus(); // call made to a function in A.js
     });
});

, надеюсь, это поможет.извините, если я не понял, что вы пытались сделать.

...