ExtJs组件中的自定义对象属性

时间:2010-01-25 22:52:29

标签: asp.net javascript 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 个答案:

答案 0 :(得分:2)

我找到了解决方案。

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

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

因此,在初始配置期间注入自定义属性后,我使用属性获取它们:

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

答案 1 :(得分:0)

在您的课程中包含以下代码:

config : {
    renderTo: null,
},

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

    return this;
},

这种getter和setter方法,如果类没有定义这些方法,则在创建类时,每个配置属性的方法都会自动生成到类'原型中。 ......你可以按照自己的意愿访问属性。