我有一个导航视图,其中 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() 函数中,以加载新视图的数据。这似乎在每次创建视图时运行,因此它可以工作。