Я начал с этого урока http://dojotoolkit.org/documentation/tutorials/1.6/store_driven_tree/
после настройки службы ServerSide Restfull все работает до сих пор.Я создал контекстное меню для дерева:
<ul dojoType="dijit.Menu" id="contextMenu" style="display: none;">
<li dojoType="dijit.MenuItem" iconClass="dijitEditorIcon dijitEditorIconDelete" onclick="pages.remove(tn.item.id);">delete page</li>
</ul>
<script type="dojo/connect">
var menu = dijit.byId("contextMenu");
menu.bindDomNode(this.domNode);
dojo.connect(menu, "_openMyself", this, function(e){
// get a hold of, and log out, the tree node that was the source of this open event
tn = dijit.getEnclosingWidget(e.target);
// contrived condition: disable all menu items except the "New Page" item
dojo.forEach(menu.getChildren(), function(child){
if(child.label != "Neue Seite")
{
child.set('disabled', typeof tn.item == 'undefined');
}
});
});
</script>
Теперь я знаю, на каком узле пользователь щелкнул правой кнопкой мыши контекстное меню и удалил его с помощью "pages.remove (tn.item.id);"из базы данных.Чтобы уведомить дерево, я перезаписываю функцию удаления:
remove: function(objectId){
this.onDelete({id: objectId});
return dojo.store.JsonRest.prototype.remove.apply(this, arguments);
}
Все работает, как и ожидалось, но если я сейчас делаю некоторые другие вещи с элементами в дереве, например, перетащите n, отпустите элемент в корень, я былудаляя ребенка раньше.Дерево больше не показывает это правильно.Я думаю, что метод удаления из хранилища только отправляет запрос DELETE на сервер, но не удаляет элемент из хранилища.Как я могу получить массив элементов в магазине для проверки и, возможно, для удаления элементов?