javascript - dijit.registry.filter/dijit.registry.map 不会迭代,尽管 dijit.registry 充满了已注册的小部件?

标签 javascript widget registry dojo

我的 Dojo 应用程序包含几个小部件,它们都在 dijit.registry(dijit.WidgetSet 的一个实例)中自动注册。我想利用 filter() ( Link ) 或 map() ( Link ) 方法将全局更改应用于某些由在方法的回调函数中定义的自定义属性模式。

通过 console.log(dijit.registry); 转储注册表证明它充满了小部件:

console.log(dijit.registry);

只是为了测试 filter() 方法,我做了以下操作(与上面提到的 console.log(dijit.registry); 在同一范围内):

var widgets = dijit.registry.filter(function(w, i) {
    return true;
});

console.log(widgets);

但我得到了以下输出:

enter image description here

使用 map() 方法时的类似行为:

var widgets = dijit.registry.map(function(w) {
    return w;
});

console.log(widgets);

...然后我得到一个空数组。

这是怎么回事,出了什么问题?

仅供引用:在回调函数中制作单个 console.log(w); 不会输出任何内容,它们甚至不会被调用,这意味着 dijit.registry甚至没有被这两种方法迭代。

console.log(dijit.registry._hash); 打印包含 12 个属性(小部件)的对象。 for(var w in dijit.registry._hash) {/* ... */} 根本不起作用 - 它莫名其妙地没有跳入循环。

最佳答案

dijit.registy.map 在我的机器TM (Firefox 6) 上运行良好。

你应该试着做一个具体的例子来重现这个。在最好的情况下,您会发现它是一个打字错误或类似的东西,在最坏的情况下,我们会提交一个 Dojo 错误。


如果一切都失败了,或许您可以尝试直接侵入 dijit.registry._hash 对象,使用普通的 for-in 循环进行迭代。 (虽然我不知道这会有多安全)

关于javascript - dijit.registry.filter/dijit.registry.map 不会迭代,尽管 dijit.registry 充满了已注册的小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455542/

相关文章:

javascript - 选择器检查所有下拉列表的选定值

javascript - Dojo 小部件默认值

javascript - 如何 Hook jQuery 小部件的功能?

installation - Inno Setup 在 Windows x64 上设置命名管道

javascript - jquery: js-cookie 在 ie7 中不工作?

javascript - 在 React 中使用方法装饰器时绑定(bind) this

javascript - Ant Design(antd)的分页和卡片组件?

500px div 的 CSS 居中问题

c# - 将事件日志添加到注册表

node.js - 在 Windows 上从命令行运行 PowerPoint 查看器