动态创建组件的Enyo无法更改其属性或触发事件

时间:2012-01-03 20:45:32

标签: enyo

我正在尝试在ToolBar中动态创建按钮列表。事件不会消失,当我尝试更改属性时,我得到一个“未捕获的typedef:无法在未定义时调用methed setcaption”我有以下代码创建按钮,

LoadTabs: function()
{
   this.$.tabs.createComponents([
    {name: "mycusbut", caption: "b",onclick: "btnClick" }, // this event never goes off!!!!
    {caption: "b"},
    {caption: "c"}
]);
//   this.$.frediop.setCaption("Put some text here");  // handle the button click
},

事件btnClick永远不会消失,以及尝试更改属性的代码。

btnClick: function() 
{
  this.$.mycusbut.setCaption("Put some text here");  // get a undefined object error
}

1 个答案:

答案 0 :(得分:2)

我们在这里创建按钮的方式将使它们出现在标签对象上。如果要引用那些,则需要使用以下语法:

this.$.tabs.$.mycusbut

关于未被调用的代码的第二个问题是更加隐蔽...因为您正在选项卡对象上创建按钮,它正在查找选项卡对象上的功能,这可能不是您想要的。您可能希望将tab对象分离为自己的类型,并且在单击按钮时可以触发事件,或者您希望采用不同的方法来创建对象。也许制作一个可以动态创建按钮的工具栏是一种很好的方法吗?

编辑:更简单的方法是告诉createComponent将所有者设置为主类。改变如下:

this.$.tabs.createComponents([
    {name: "mycusbut", caption: "b",onclick: "btnClick" },
    {caption: "b"},
    {caption: "c"}
], {owner: this});

现在您的代码应该按预期工作。