- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在树面板中添加一个自定义对象作为树节点。它将被用作
var complex_object = {....}
myTree.getRootNode().appendChild(new MyNode(complex_object));
为了实现这样的功能,我找到了 Ext.data.NodeInterface
,它为树节点提供了一个通用接口(interface)。所以我尝试延长它。这是它的完成方式。
var MYNS = {
TreeNode: new Ext.Class({
protocol : "",
displayName : "",
extend: 'Ext.data.NodeInterface',
constructor : function(line) {
this.protocol = get_protocol(line);
this.displayName = get_display_name(line);
var configObj = {
id : this.protocol + "-" + this.displayName,
text : this.displayName,
leaf : true,
iconCls : protocol+"-user"
};
this.callParent([configObj]);
}
})
}
事实证明,这不会创建 Ext.data.NodeInterface
的任何扩展类。然而,它创建的对象 bud 无法从其父对象中发挥作用。
var a = new MYNS.TreeNode(...);
a.appendChild(); // throws error
我做错了吗?如何正确地做到这一点?
最佳答案
Ext.data.NodeInterface
是一个“工厂”,用于使用所需的属性/函数来装饰 Ext.data.Model
类的原型(prototype)。
This class is used as a set of methods that are applied to the prototype of a Model to decorate it with a Node API. This means that models used in conjunction with a tree will have all of the tree related methods available on the model.
这就是你如何使用它:
Ext.define('app.MyModel', {
extend: 'Ext.data.Model',
fields: [ /*...*/ ],
/*...*/
});
Ext.data.NodeInterface.decorate('app.MyModel'); // String will be resolved to Class object internally
var obj = Ext.ModelManager.create(parent, 'app.MyModel');
obj.appendChild(/*...*/);
核心方法是Ext.data.NodeInterface#decorate
- 请参阅docs - 内部有利于#getPrototypeBody
。这些都是静态方法。您可以重写 getPrototypeBody 来操作类定义。为了让其他 Ext 类接受更改,您宁愿覆盖 Ext.data.NodeInterface
而不是扩展它。
但是,另一种方法是通过扩展Ext.data.Model
来添加所需的功能 - 这实际上可能是满足您的要求的更直接的方法。
关于javascript - 扩展 Ext.data.NodeInterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12411043/
在 ExtJs 3 中,TreeNode 有一个“禁用”属性,但在 ExtJs 4 中,没有任何方法可以禁用树节点(请参阅 Ext.data.NodeInterface 配置)。 有没有办法在 Ext
我想在树面板中添加一个自定义对象作为树节点。它将被用作 var complex_object = {....} myTree.getRootNode().appendChild(new MyNode(
我在 Extjs 4.1 上用 rest 服务创建了简单的树。 如何从 Ext.data.NodeInterface 更改 parentId 属性名称? 这是我的模型: Ext.define('Bui
nodeInterface如何重新获取并进行对象识别, 还有type代表什么,obj代表什么,这里的id是什么 instanceof是什么意思 const { nodeInterface, nodeF
我是一名优秀的程序员,十分优秀!