Enyo, динамически создавая Компоненты, не может изменять их свойства или запускать события - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь динамически создать список кнопок на панели инструментов.События не исчезают, и когда я пытаюсь изменить их свойства, я получаю «uncaught typedef: Невозможно вызвать methed setcaption для 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
}

1 Ответ

2 голосов
/ 04 января 2012

То, как мы создаем кнопки здесь, заставит их появляться на объекте вкладок.Если вы хотите сослаться на них, вам нужно использовать следующий синтаксис:

this.$.tabs.$.mycusbut

Вторая проблема с кодом, который не вызывается, немного более коварна ... Поскольку вы создаете кнопкиобъект tab ищет функцию объекта tab, что, вероятно, не то, что вам нужно.Вы либо захотите разделить объект вкладки на его собственный вид, и у вас будет событие, которое вы можете запустить при нажатии кнопки, или вы захотите использовать другой подход к созданию объектов.Возможно, было бы неплохо создать вид панели инструментов, с помощью которого можно динамически создавать кнопки?

Редактировать: еще более простой подход - указать createComponent установить владельца на основной вид.Измените его следующим образом:

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

Теперь ваш код должен работать так, как вы ожидаете.

...