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

Sencha touch 2 Sencha 2导航视图创建视图的新实例而不替换旧实例,sencha-touch-2,Sencha Touch 2,我有一个导航视图,列表(a)是它的项。 单击列表(A)项,显示新视图(B)。 现在,新视图(B)有一个按钮可再次单击更改为视图(C) 问题是 视图(C)与视图(B)相同 我能够创建新视图并推送它,但无法填充新数据。 回到视图(B),我得到了视图(C)的数据 如何解决这种情况 代码: /** * navigationview with list(A) */ Ext.define('activity', { extend: 'Ext.navigation.View', co

我有一个导航视图,列表(a)是它的项。 单击列表(A)项,显示新视图(B)。 现在,新视图(B)有一个按钮可再次单击更改为视图(C)

问题是 视图(C)与视图(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)和新数据。

这是导航视图的一个功能,您无法回避。改为使用setActiveItem来推送视图。。。我也遇到了同样的问题,并改为setActiveItem,它比导航视图更能控制视图,因此在首次加载视图(2)后,ref将返回一个1的数组,这是应该的。仅当返回1个组件时,引用才起作用

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

这意味着没有监听器触发,数据不会加载到新实例上


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

这将帮助我们查看您的代码。尤其是如何为视图(C)填充数据,因为没有视图(C)。我想要新数据的视图(B)。我不想重新编写新的类,也不想维护以前的数据。视图的代码并没有真正的帮助。你能发布控制器的代码吗?我的控制器并不复杂。我只是推送视图并传递数据。this.view.push(Ext.create('TaskDetails',{data:record.data,view:inst.view}));这个视图和inst.view是什么?