0

我有一个以 list(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)和新数据。

4

2 回答 2

0

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

于 2012-11-28T05:35:58.883 回答
0

在你第一次加载 view(2) 之后,ref 返回一个 1 的数组,正如它应该的那样。Refs 仅在返回 1 个组件时才有效。

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

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

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

于 2012-11-28T05:57:11.263 回答