У меня есть объект dojo.data.ItemFileWriteStore с элементами, которые содержат атрибут 'children', который, в свою очередь, содержит массив дочерних элементов.Я храню дерево, и мне нужно извлечь узлы листьев из этого дерева.Я написал метод извлечения, но он не будет работать с запросом «children: []». Как я могу получить элементы хранилища данных, которые имеют children.length 0 (конечные узлы)?Пустой массив без добавления таких атрибутов, как «leaf»: bool к моим элементам, очевидно, будет работать, но я бы предпочел не иметь дополнительного атрибута.
dojo.require(dojo.data.ItemFileWriteStore);
// A tree node with no children, these are the kind I want returned
// from the query!
var rootItem = {
children: []
};
var treeStore = new dojo.data.ItemFileWriteStore({
data: {
items: [rootItem]
}
});
//when dojo reaches one of its inner filtering methods
//there is a point where it calls dojo.some() to see
//which elements in the array to return which match the
//given items attribute, this is where it fails
treeStore.fetch({
query: {children: []},
queryOptions: {deep: true},
onComplete: function(leafItems) {
// All the items with no children here...
}
});
Я также попытался вложить функцию для атрибута вбезрезультатно:
treeStore.fetch({
query: {
children: function(store, item){
return store.getValue(item, 'children').length == 0;
}
},
queryOptions: {deep: true},
onComplete: function(leafItems) {
// All the items with no children here...
}
});