Как создать кнопки во время выполнения в Enyo? - PullRequest
1 голос
/ 01 января 2012

Мне нужно приложение для отображения кнопок, которые создаются во время выполнения. Причина в том, что я буду получать информацию от службы, чтобы узнать, сколько кнопок мне нужно.

В настоящее время программа работает, но кнопки не отображаются.

Я пытаюсь использовать панель инструментов и установить свойство control в функции create. Программа работает нормально, но на моей панели инструментов нет кнопок? Есть ли способ сделать это?

Код:

// Trying to create buttons at run time
name: "MyApps.MainApp",
kind: enyo.VFlexBox,
components: [
        {kind: "PageHeader", content: "Template"},
        {kind: "Toolbar", name: "tabsted"},
        {name: "feedUrl", kind: "Input", flex: 1},
        {kind: "HtmlContent", name: "comments", content: "hello world <br> and another lin"},
        {name:"curValue", content:("Sample Text \r\n and more")},
        {kind: "Button", caption: "Action", onclick: "btnClick"},
],

// this gets called first ha
create: function()
{
    this.inherited(arguments);

    this.$.tabsted.components= [
            {caption: "a"},
            {caption: "b"},
            {caption: "c"}
    ];

    this.LoadCommments();
    },

    LoadCommments: function()
    {
        this.$.comments.content="fred";   
    },

    // called when button is clicked
    btnClick: function() 
    {
        this.$.curValue.setContent("Put some text here");  // handle the button click
    }
};

1 Ответ

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

Вы захотите взглянуть на документацию API для Enyo.Component.В частности, раздел о создании компонентов динамически.Попробуйте изменить код следующим образом:

    this.$.tabsted.createComponents([
        {caption: "a"},
        {caption: "b"},
        {caption: "c"}
    ], {owner: this});

Кроме того, в функции LoadComments вы захотите вызвать setContents, а не пытаться напрямую обновить значение содержимого.

...