我有一个导航视图,列表(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)。
答案 0 :(得分:0)
这是导航视图的一项功能,您无法避开。使用setActiveItem代替推送视图...我遇到了同样的问题,并改为setActiveItem,它让你比导航视图更能控制你的视图所以
答案 1 :(得分:0)
首次加载视图(2)后,ref将返回一个1的数组。 Refs仅在返回1个组件时有效。
再次加载视图(2)后,ref返回一个2的数组。
这意味着没有任何侦听器触发,并且数据不会加载到新实例上。
当控制器第一次看到视图时,引用绑定到dom元素。我们无法改变这一点。这意味着我们不能直接使用ref。我们知道Ext.ComponentQuery.query是refs所依赖的。使用它,我们可以在运行时模拟refs。我将运行时dataview ref放在控制器的initialize()函数中,以加载新视图的数据。这似乎在每次创建视图时都会运行,因此它可以正常运行。