动态创建组件的Enyo可以’;不要更改它们的属性或触发事件

动态创建组件的Enyo可以’;不要更改它们的属性或触发事件,enyo,Enyo,我试图在工具栏中动态创建按钮列表。事件没有发生,当我尝试更改这些属性时,我得到一个“uncaught typedef:cannotcall methed setcaption on undefined”,我有以下创建按钮的代码 LoadTabs: function() { this.$.tabs.createComponents([ {name: "mycusbut", caption: "b",onclick: "btnClick" }, // this event never

我试图在工具栏中动态创建按钮列表。事件没有发生,当我尝试更改这些属性时,我得到一个“uncaught typedef:cannotcall methed setcaption on undefined”,我有以下创建按钮的代码

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
}

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

this.$.tabs.$.mycusbut
关于代码未被调用的第二个问题有点阴险。。。因为您正在选项卡对象上创建按钮,所以它正在选项卡对象上查找函数,这可能不是您想要的。您可能希望将选项卡对象分离为自己的类型,并在单击按钮时触发一个事件,也可能希望采用不同的方法来创建对象。也许制作一个可以动态创建按钮的工具栏是一个好方法

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

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

现在,您的代码应该可以正常工作。

您好,谢谢,您能解释一下美元吗,为什么我不能去