0

基本的にデータベースからデータをフェッチする Enyo のウィンドウ ビューを使用しています。フェッチされたアイテム、複数のボタンが動的に作成されます。いずれかのボタンをクリックすると、データベースへの別の呼び出しが行われ、他のアイテムのセットが取得されます。取得したアイテムは、ボタンとして <ul> アイテムに動的に追加する必要があります。これはコードによって行われます-

testPOSView : function(inSender, inEvent) {
        var data = inEvent.data;
        console.log(data.tables);
        enyo.forEach(data.tables, function(table) {
            console.log(table);
            this.$.sectiontablebar.createComponent({
                kind : 'OB.OBPOSPointOfSale.UI.TablesButton',
                button :  {
                    kind : 'OB.UI.Section',
                    content: table.tableName,
                    id: table.tableId
                }
            });
        }, this);
    }

しかし、ボタンをクリックすると、DB から結果が得られますが、sectiontablebar コンポーネントには追加されません。

ファイルの完全なコードは、https://gist.github.com/sangramanand/ad665db9cd438001254aで入手できます。

どんな助けでも大歓迎です。ありがとう!!!

4

2 に答える 2

2

これが正しい方法かどうかはわかりませんがサブコンポーネントを動的に作成するときthis.render()は、関数の最後に追加します。これによりコンポーネントがレンダリングされ、動的に追加されたコンテンツが表示されます。

あなたのコードを書き直すとしたら、次のようにします。

testPOSView : function(inSender, inEvent) {
    var data = inEvent.data;
    enyo.forEach(data.tables, function(table) {
        // create the sub-component in "this"
        this.createComponent({
            // and assign the container
            container: this.$.sectiontablebar,
            kind : 'OB.OBPOSPointOfSale.UI.TablesButton',
            button :  {
                kind : 'OB.UI.Section',
                content: table.tableName,
                id: table.tableId
            }
        });
    }, this);
    this.render();
}
于 2013-06-13T13:42:15.240 に答える