我推的观点是这样this.up('navView').push({xtype: 'myView'})
如何删除特定视图,这是在导航堆栈的中间?
至少我应该摆脱这种警告
[WARN][Ext.Component#constructor] Registering a component with a id (listxyz) which has already been used. Please ensure the existing component has been destroyed (Ext.Component#destroy().
推景观查看天气之前的观点已经存在,并摧毁它,如果它已经存在,所以你不会得到这些警告,并可以轻松导航。
if(Ext.getCmp('myView')){
Ext.getCmp('myView').destroy();
}
//Push myView
where myView should be the id of that view declared in config of that view
config: {
id:'myView',
}
我们为您问题的两种方法
首先是RemoveAt移除
Removes the Component at the specified index:
myNavigationView.removeAt(0); //removes the first item
二是删除
remove( item, destroy ) : Ext.Component1
Removes an item from this Container, optionally destroying it
myNavigationView.remove('ChildComponent ItemId here in single quotes',true);
你的意思是,当你按下一个按钮(或者后退按钮)应该跳回说2-3的意见,而不是仅仅一种观点认为,?
例如:遍历是不言而喻的意见::::
1 - > 2 - > 3 - > 4 - > 5(设置一些条件X) - > 6 - >(现逆转使用后退按钮) - > 5 - > 4 - > 2(因为3已经消失由于条件X ) - > 1。
如果这是你的意思,那么你可以通过侦听在navView“返回”事件扩大在控制器中的后退按钮功能。 然后,一旦你得到的情况下,您就可以在导航视图的项目数,并据此决定弹出1个或2或3个事件,因此由要么1-2-3等观点向后跳跃。 对于用户来说,这将使它看起来像导航视图弹出(在上面的例子)图3,当你达到视图5。
代码如下::
back : function(){
if(condition=="X"){
//so if your 5th view (say) set some condition, then when you try to pop, instead of popping one, it will pop 3 views (say).
Ext.getCmp('navView').pop(3);
}
}
如何找出哪些视图被停用(所以你只在你离开的看法5后弹出3次(说),而不是同时找你
第一件事: 不要使用navigationview删除或RemoveAt移除! 删除和RemoveAt移除来自集装箱的方法( http://docs.sencha.com/touch/2.2.0/source/Container3.html#Ext-Container-method-remove )。 当您使用navigation.pop(X)的对象做内部元素的计数,当您使用删除/ RemoveAt移除不会发生。 所以,你可能有一些麻烦,如“后退按钮”在第一页显示,因为删除未更新计数( http://docs.sencha.com/touch/2.2.0/source/View2.html#Ext-导航-视图-方法-doPop )。
现在关于你的问题:使用弹出(X)。 你可以检查至极网页是流行之前,所以你不会有任何警告。
在我的应用程序有一个按钮,返回到导航的第一页。
var ctx = Ext.getCmp('navView');
var pages = ctx.getInnerItems().length -1;
if(pages > 0){
ctx.pop(pages);
}
所以,你可以检查,如果用户是在“X”页面或检查比较中的最后一项:
// compare with the position
var ctx = Ext.getCmp('navView');
var pages = ctx.getInnerItems().length -1;
if(pages == 5){
ctx.pop(2);
}
//OR compare with the last object
var ctx = Ext.getCmp('navView');
var innerElements = ctx.getInnerItems();
var pages = ctx.getInnerItems().length -1;
if(innerElements[pages].config.xtype == "myXtypeClass"){
ctx.pop(2);
}
尝试从使用拼接阵列移除值:
var idx = this.up('navView').getItems().indexOf({xtype: 'myView'});
this.up('navView').getItems().splice(idx,1);