dijit.从树到子节点的树dn不会在目标树中创建
dijit.Tree DnD from tree to child nodes don't get created in target tree
我有两个dijit。树:srcTree和trgTree。我已经实现了trgTree。itemCreator函数,并在目标节点/树中正确创建被删除的节点,但未创建被删除节点的子节点。我也尝试了许多排列来创造它们,但似乎都不起作用。
知道我错过了什么吗?下面是我的itemCreator代码:
trgTreeItemCreator: function(/*DomNode[]*/ nodes, target, /*dojo.dnd.Source*/ source) {
console.info("*** start newTreeItemCreator");
var tmp = dijit.getEnclosingWidget(nodes[0]);
var kids = dojo.map(tmp.item.items, function(kid){
return {
"id": kid.id,
"name": [kid.name[0]],
"type": [kid.type[0]]
};
});
var newItems = [{id:nodes[0].id, name:[tmp.label], type:[tmp.item.type[0]], items:kids}];
return newItems;
},
我的帖子赢得了滚草…太棒了!:)我想出了一个变通办法,就是这个。
var that = this;
this.trgTree =
new dijit.Tree({
model: this.trgTreeModel,
dndController: "dijit.tree.dndSource",
checkAcceptance: this.treeCheckAcceptance,
checkItemAcceptance: this.trgTreeCheckItemAcceptance,
getIconClass: app.getIcon,
onDndDrop: function(source, nodes, copy) {
that.handleDrop(that, dijit.getEnclosingWidget(
nodes[0]).item, this.current.item);
that.srcStore.save();
that.trgStore.save();
}
}, "trgTree");
handleDrop: function(inPage, inSrcItem, inTrgItem) {
console.info("*** start addItem: srcItem: " + inSrcItem.name[0]);
var srcType = inSrcItem.type[0];
var kids = inSrcItem.items;
if (inTrgItem.type != "fooType") {
// do something unique for fooType node targets
}
// add the item to the tree
inPage.addItem(inPage, inSrcItem, inTrgItem);
}
addItem: function(inPage, inSrcItem, inTrgItem) {
var srcType = inSrcItem.type[0];
var trgType = inTrgItem.type[0];
var theName = inSrcItem.name[0];
if (srcType == "fooType") {
srcType = inSrcItem.txType[0];
}
var newItem = {
id: inSrcItem.id[0],
name: theName,
type: srcType,
items: []
};
newItem = inPage.trgStore.newItem(newItem);
inPage.trgTreeModel.pasteItem(newItem, null, inTrgItem, false, 0);
var kids = inSrcItem.items;
if (kids !== undefined) {
// call recursively to add child items
for (var i in kids) {
inPage.addItem(inPage, kids[i], newItem);
// TODO: expand the node after it is added
}
}
},
所有这些代码都是在一个类的背景下,这就是那个类(这是一个WaveMaker项目,所以这个类是一个wm.Page)。很抱歉缺乏详细信息和文档,但这是一个很好的入门代码。如果你对我的变通方法有什么具体的问题,尽管问,我会尽量及时回答的。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 为effect Composer创建GodRays效果过程
- 从javascript创建一个列表
- onkeyup无法动态创建多个文本区域
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何访问声音管理器2创建的声音对象
- gull.dest未创建目标文件夹
- 将数据从一个工作表复制到另一个工作表;使用目标工作表中的复制数据创建一个表
- 使用 gulp 编译 TypeScript 会创建一个不需要的目标文件夹
- Ember.js-为目标应用程序创建动态filterProperty值
- 为什么每次删除和重新创建目标元素时动画速度都会增加
- 如何创建朝向目标的平滑动画
- 谷歌分析事件目标不创建转换
- 创建一个新的maven目标来运行jasmine测试
- 如何为node.js流管道创建目标路径
- 在创建事件处理程序时,jQuery是否会修改目标元素?
- 间歇地创建目标目录
- dijit.从树到子节点的树dn不会在目标树中创建
- 我如何创建一个函数,将目标在一个链接中的某个类,并为该链接生成一个弹出窗口
- HTML5拖放在目标中创建原始副本