1

我正在尝试在工具栏中动态创建按钮列表。事件没有发生,当我尝试更改那里的属性时,我得到一个“未捕获的 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
}
4

1 回答 1

2

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

this.$.tabs.$.mycusbut

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

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

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

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

于 2012-01-03T22:00:22.697 回答