0

Stores オブジェクトは、ajax リクエストを介して動的にロードされます。コンソールでデバッグしているときに、Storeオブジェクトがレコードで満たされているのに、Listが空であることを確認できます。

コード:

ビューポート ビュー

Ext.define('sample.views.Viewport', {
    extend: 'Ext.tab.Panel',

    title:   'Hello world!',

    xtype: 'viewport',

    config: {
        fullscreen: true,

        tabBar: {
            docked: 'bottom',
        },

        items: [
            { xclass: 'sample.views.wares.lists.Popular' },
        ]
    }
});

ナビゲーション ビュー ビュー

Ext.define('sample.view.wares.lists.Popular', {
    extend: 'Ext.NavigationView',

    xtype: 'Popular',

    config: {       
        iconCls: 'home',
        title: 'Pop. prekės',

        items: [
            {
                xtype: 'wares',                                                         
            }
        ]   
    }
});

リストビュー

Ext.define('sample.views.wares.lists.List', {
    extend: 'Ext.List',

    xtype: 'wares',

    config: {
        store: 'Wares', 
        itemTpl: '{Name}'
    },

    initialize: function () {
        this.config.title = sample.app.title;
    }
});    

Ajax リクエストを介して動的にロードされたレコードのオブジェクトを格納します。

Ext.define('sample.store.Wares', {
    extend: 'Ext.data.Store',

    config: {
        model: "sample.models.WaresListItem"
    }
});

Ripple エミュレーターでの結果

4

3 に答える 3

2

ほとんどの場合、内部コンポーネントが表示されないのは、そのコンテナーのレイアウトを定義していないためです。

以下のように、ナビゲーション ビューの構成にレイアウトを追加してみてください。

config: {       
    iconCls: 'home',
    title: 'Pop. prekės',
    layout: 'fit',
    items: [
        {
            xtype: 'wares',                                                         
        }
    ]   
}

お役に立てれば

参照: RDougan の回答: How do I make a dataview.list visible in Sencha Touch 2?

于 2012-12-12T16:06:38.683 に答える
1
initialize: function () {
    this.config.title = sample.app.title;
    this.callParent();
}

「this.callParent()」は、初期化関数がある場合に重要です。これは、親 (この場合は「Ext.dataview.List」) を呼び出し、List を構築するために必要な特定のデフォルトの処理を実行するように要求するためです。これは、Java のコンストラクターから super を呼び出すことに似ています。

これを宣言ブロックに移動できれば

this.config.title = sample.app.title;

そして、このようにします

config: {
    store: 'Wares', 
    itemTpl: '{Name}',
    title: sample.app.title
},

初期化ブロックを完全に必要としない

于 2012-12-14T10:17:24.267 に答える
0

callParent公式ドキュメントのサンプル アプリケーションを何度か確認し、関数内で関数を呼び出すことで問題が解決しましたinitialize。理由はまだわかりません。

initialize: function () {
    this.config.title = sample.app.title;
    this.callParent();
}
于 2012-12-13T16:27:43.473 に答える