我使用Dojo 1.3编写了一个应用程序,其中我使用了Dijit Tree组件。 我正在使用商店中指定的JSON数据加载树,树库模型又使用它。
在1.3版本中,树元素直接从JSON数据中获取id。但是在1.4中,树元素有自己的id,类似于dijit_treenode_4
。我在JSON中指定的id是唯一的,我无法理解为什么它们不再被使用了。
请帮助我了解此功能的更改方式以及如何覆盖自动ID生成。
提前致谢,
跌
答案 0 :(得分:0)
我认为这个设计决策是分离模型和视图的一个很好的改进。默认情况下,商店数据中的标识符确实不会对树节点的DOM元素ID产生任何影响。
当然,如果你想要这种行为,你可以实现它。定义自己的树节点类,覆盖DOM元素ID。
dojo.require('dijit.Tree');
dojo.declare('yourapp.TreeNode', [dijit._TreeNode], {
// summary:
// Tree node with custom ID.
postCreate: function(){
// summary:
// Overrides the normal `postCreate()` method to set custom ID
// for node DOM element.
this.inherited(arguments);
var id = this.tree.model.store.getValue(this.item, 'id');
this.domNode.id = id;
}
});
然后继承dijit.Tree
,并覆盖方法_createTreeNode()
以创建自定义树节点。
dojo.declare('yourapp.Tree', [dijit.Tree], {
_createTreeNode: function(args) {
return new yourapp.TreeNode(args);
}
});