0

list(A) を項目とするナビゲーション ビューがあります。リスト(A)項目をクリックすると、新しいビュー(B)が表示されます。これで、新しいビュー (B) には、もう一度クリックするとビュー (C) に変わる 1 つのボタンが表示されます。

問題は、view(C) が view(B) と同じであることです。

新しいビューを作成してプッシュすることはできますが、新しいデータを入力することはできません。ビュー(B)に戻ると、ビュー(C)のデータを取得しています。

このシナリオを解決する方法。

コード:



/**
 * navigationview with list(A) 
 */
Ext.define('activity', {
    extend: 'Ext.navigation.View',
    config: {
        items:[
            {
                grouped:true,
                pinHeaders:   true,
                xtype:'list',
                store:{
                    xclass:'ActivityList'
                },
                itemTpl:'{title}',
                emptyText: 'nothing found'
            }
        ]
    }
});

/**
 * child view(B) to be appeared on clicking any item in list(A).
 */
Ext.define('TaskDetails', {
    extend: 'Ext.Panel',

    config:   {
        title:  'Task',
        layout: {
            type: 'fit'
        },
        items:  [
            {
                xtype:  'toolbar',
                docked: 'top',
                height: '40px',
                items:  [
                    { xtype: 'spacer'},
                    {
                        xtype:        'segmentedbutton',
                        height:       '30px',
                        items:        [
                            {
                                text:    'Task Details',
                                pressed: true
                            },
                            {
                                text:      'Child Tasks',
                                badgeText: '0'
                            }
                        ]
                    },
                    { xtype: 'spacer'}
                ]
            },
            {
                xtype:  'container',
                items:  [
                    {
                        xtype:'dataview',
                        store:     {
                            xclass: 'TaskDetails'
                        },
                        itemTpl:   'some thing....'
                    },
                    {
                        xtype:'list',
                        store:{
                            xclass:'ChildTask'
                        },
                        itemTpl: 'some template...'
                    }
                ]
            }
        ]
    }

});

コントローラーでビューを変更していますが、ビュー (B) のリストをクリックすると、新しいデータで同じビュー (B) を再度表示したいと考えています。

4

2 に答える 2

0

最初にview(2)をロードした後、refは1の配列を返します。参照は、1つのコンポーネントが返された場合にのみ機能します。

view(2)を再度ロードした後、refは2の配列を返します。

これは、どのリスナーも起動せず、データが新しいインスタンスにロードされないことを意味します。

コントローラが最初にビューを表示するときに、参照はdom要素にバインドされます。それを変えることはできません。これは、refを直接使用できないことを意味します。Ext.ComponentQuery.queryがrefsに依存していることはわかっています。これを使用して、実行時に参照をシミュレートできます。ランタイムデータビュー参照をコントローラーのinitialize()関数に入れて、新しいビューのデータをロードします。これは、ビューが作成されるたびに実行されるように見えるため、機能します。

于 2012-11-28T05:57:11.263 に答える
0

これは回避できないナビゲーション ビューの機能です。代わりに setActiveItem を使用してビューをプッシュします...同じ問題があり、setActiveItem に変更すると、ナビゲーション ビューよりもビューをより細かく制御できるようになります。

于 2012-11-28T05:35:58.883 に答える