1

我正在使用以下格式的YUI3 TabView 组件:

var tabview;
YUI().use('tabview', function(Y) {
    tabview = new Y.TabView({srcNode:'#demo'});
    alert (tabview); //defined
    tabview.render();
});
alert (tabview); //undefined

但是,当我尝试tabview在其声明函数之外访问该变量时,我收到一个异常,即对象未定义。你能告诉我我错过了什么吗?

4

1 回答 1

1

编辑:还使用全局变量检查 JavaScript YUI3?

考虑到 javascript 的异步特性,tabview不一定要alert()在 YUI 块之外调用它之前渲染。在这种情况下,在警告框中看到“未定义”意味着该变量已被声明但未分配给任何值。如果变量不可访问,alert()则会由于未捕获的“ReferenceError”而失败。

因此,在尝试猜测您的意图时,如果您想检查 tabview 对象,您可能希望使用console.log()而不是alert()在浏览器控制台中查看输出,并将其放在 YUI 块中render()

var tabview;
YUI().use('tabview', function(Y) {
    tabview = new Y.TabView({srcNode:'#demo'});
    console.log(tabview); //defined
    tabview.render();

    console.log(tabview);
});

为了tabview在 YUI 块之外使用,请确保它已准备就绪。举个简单的例子:

Y.on("domready", function() {
    console.log(tabview);
}
于 2013-08-27T10:05:24.910 回答