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



我有一个导航视图,其中 list(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)和新数据。

这是导航视图的一个功能,您无法规避。改用 setActiveItem 来推送视图...我遇到了同样的问题并更改为setActiveItem,它比导航视图使您可以更好地控制视图,因此

在你第一次加载 view(2) 之后, ref 返回一个数组 1, 它应该返回。引用仅在返回 1 个组件时才有效。

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

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

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

最新更新