Sencha 2导航视图创建新的视图实例而不替换旧视图

时间:2012-11-27 09:55:20

标签: sencha-touch-2

我有一个导航视图,列表(A)作为项目。 单击列表(A)项目,显示新视图(B)。 现在新视图(B)再次点击一个按钮改为查看(C)。

问题是 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)。

2 个答案:

答案 0 :(得分:0)

这是导航视图的一项功能,您无法避开。使用setActiveItem代替推送视图...我遇到了同样的问题,并改为setActiveItem,它让你比导航视图更能控制你的视图所以

答案 1 :(得分:0)

首次加载视图(2)后,ref将返回一个1的数组。 Refs仅在返回1个组件时有效。

再次加载视图(2)后,ref返回一个2的数组。

这意味着没有任何侦听器触发,并且数据不会加载到新实例上。

当控制器第一次看到视图时,引用绑定到dom元素。我们无法改变这一点。这意味着我们不能直接使用ref。我们知道Ext.ComponentQuery.query是refs所依赖的。使用它,我们可以在运行时模拟refs。我将运行时dataview ref放在控制器的initialize()函数中,以加载新视图的数据。这似乎在每次创建视图时都会运行,因此它可以正常运行。