gpt4 book ai didi

javascript - 关于 yui3 JS 的问题

转载 作者:行者123 更新时间:2023-12-02 20:29:00 25 4
gpt4 key购买 nike

我有 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
});

我无法从 B.js 调用函数 setstatus。该函数根本没有执行。虽然没有抛出错误。这可能是什么问题?

最佳答案

您发布的代码中有很多内容没有意义。你在哪里实例化 Spinner 对象?我会根据我认为您正在尝试做的事情尝试提供帮助。

首先,您永远不会向系统注册微调器组件。在 a.js 中,您在 YUI.use 函数中声明 var spinner 。这使得无法从 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 应该只是传递给扩展的原型(prototype)属性对象的成员

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
});
});

希望这有帮助。抱歉,如果我没有理解你想要做什么。

关于javascript - 关于 yui3 JS 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4467369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com