A filtragem e a pesquisa de árvore de Dijit não estão funcionando no ObjectStoreModel
Eu criei uma árvore de dijit e uma caixa de texto e quero filtrar os nós da árvore com base nas palavras-chave fornecidas na caixa de texto. Eu implementei a solução fornecida em outra pergunta, mas ela não parece funcionar. Quando o usuário digita alguma palavra na caixa de texto, a árvore é preenchida novamente com os mesmos dados.
Pesquisa e atualização de árvores
A seguir está o meu código:
require(["dijit/form/TextBox","dojo/store/Memory","dijit/tree/ObjectStoreModel","dijit/Tree","dojo/domReady!"], function(TextBox, MemoryStore, ObjectStoreModel, Tree) {
var searchBox = new TextBox({
placeHolder: "[ Type here to search ]"
}, "searchBox");
searchBox.on("blur", function() {
tree.model.store.query({
name: "*" + searchBox.value + "*"
});
/*the below approach has been taken from the other question*/
tree.model.store.clearOnClose = true;
/*tree.model.store.close(); //This is not working?*/
delete tree._itemNodesMap;
tree._itemNodesMap = {};
tree.rootNode.state = "UNCHECKED";
delete tree.model.root.children;
tree.model.root.children = null;
tree.rootNode.destroyRecursive();
tree.model.constructor(tree.model)
tree.postMixInProperties();
tree._load();
});
var store = new MemoryStore({
idProperty: "id",
getChildren: function(object) {
return this.query({
parent: object.id
});
},
data: [{
id: "0",
name: "Root Node",
parent: null
}, {
id: "1",
name: "File",
parent: "0"
}, {
id: "2",
name: "System",
parent: "0"
}, {
id: "3",
name: "Diagnosis",
parent: "0"
}, {
id: "4",
name: "Management",
parent: "0"
}]
});
var model = new ObjectStoreModel({
store: store,
query: {
id: "0"
}
});
var tree = new Tree({
model: model,
showRoot: false
}, "treeDiv");
tree.startup();
});
Veja o código de exemplo em JSFIDDLE: http://jsfiddle.net/xLfdhnrf/16/
A árvore e a caixa de texto estão processando bem, apenas a pesquisa não está funcionando, alguma sugestão? Também por que o sinal EXPANDIR (+) está sendo exibido com nós de folha?