Приложение My Dojo содержит несколько виджетов, которые все автоматически регистрируются в dijit.registry
(экземпляр dijit.WidgetSet ). Я хотел бы использовать метод filter()
( Link ) или map()
( Link ) для применения глобальных изменений к определенным виджетам, отфильтрованным по шаблону пользовательского свойства, определенному в функции обратного вызова методов.
Сброс реестра с помощью console.log(dijit.registry);
доказывает, что он заполнен виджетами:
Просто для проверки метода filter()
я сделал следующее (точно в том же объеме, что и вышеупомянутый console.log(dijit.registry);
):
var widgets = dijit.registry.filter(function(w, i) {
return true;
});
console.log(widgets);
Но я получил следующий вывод:
Аналогичное поведение при использовании метода 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) { /* ... */ }
вообще не работает - он загадочным образом не запрыгивает в петлю.