1

ツールバーにボタンのリストを動的に作成しようとしています。イベントが発生せず、プロパティを変更しようとすると、「キャッチされていない typedef: Cannot call method 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
}
4

1 に答える 1

2

ここでボタンを作成する方法により、ボタンがタブ オブジェクトに表示されます。それらを参照したい場合は、次の構文を使用する必要があります。

this.$.tabs.$.mycusbut

コードが呼び出されないという 2 番目の問題は、もう少し厄介です... タブ オブジェクトにボタンを作成しているため、タブ オブジェクトの関数を探していますが、これはおそらくあなたが望んでいるものではありません。タブ オブジェクトを独自の種類に分けて、ボタンがクリックされたときに起動できるイベントを用意するか、別の方法でオブジェクトを作成する必要があります。おそらく、ボタンを動的に作成できるツールバーの種類を作成するのが良い方法でしょうか?

編集:さらに簡単な方法は、createComponent に所有者をメインの種類に設定するように指示することです。次のように変更します。

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

これで、コードは期待どおりに動作するはずです。

于 2012-01-03T22:00:22.697 に答える