2010-01-25 120 views
2

如何将自定义属性添加到ExtJs中的控件对象中。ExtJs组件中的自定义对象属性

例如:

var button = new Ext.Button({ 
    text:"something", 
    id:"somethingId" 
}) 

这种控制来自动态服务器,我想写我的自定义属性以及象下面这样:

var button = new Ext.Button({ 
    text:"something", 
    id:"somethingId", 
    customField : "I created this one" 
}) 

,然后我要像下面去实现它:

alert(button.customField); 

在我的现实情况下,我做这个类型在服务器上创建AsyncTreeNode并将它们发送到客户端,并通过TreeLoader添加它们,这些节点可以帮助我出现画面点击后,所以我希望他们有一个地址栏,所以我可以把它在返回点击节点以及TreePanel单击事件:

listeners:{ 
    click : function(clickedNode,eObj){ 
     alert(node.customFields); 
    } 
} 

我试过了,但是它说的是undefined。通常情况下,由于JavaScript松散,我可以轻松修改对象,但在这种情况下,它不会按照我预期的方式工作。

在此先感谢....

回答

2

我找到了解决方案。

ExtJS的是提供attributes属性来获取所有的自定义提供的属性:

属性:对象 为节点提供的属性。您可以使用此属性来访问您提供的任何自定义属性。

所以之后我注入初始配置过程中的自定义属性我让他们通过使用属性:

listeners: { 
      click: function(node) { 
       $("#nodeId").val(node.id); 
       if (node.isLeaf()) { 
        $("#galleryImage").attr("src", "../Galleries/" + node.attributes.image); 
       } 
      } 
     } 
0

包含在类下面的代码:

config : { 
    renderTo: null, 
}, 

constructor: function(config) 
{ 
    this.initConfig(config); 

    return this; 
}, 

这样getter和setter,方法对于每个配置属性,都会在创建类的时候自动生成类的原型,如果类没有定义这些方法的话。 ...你可以按照你最初的想法访问属性。

+0

当我这样做时,我'无法读取属性'添加'未定义' – 2016-04-12 19:24:43