I have a problem with my NavigationView in Sencha Touch 2. When I push the 'back' button, then I can't navigate more than one window.
I navigate using view.push() and view.pop().
view.js:
Ext.define('MyApp.view.view', {
extend: 'Ext.navigation.View',
alias: 'widget.View',
config: {
id: 'nvView',
items: [
{
xtype: 'toolbar',
docked: 'bottom',
layout: {
align: 'center',
pack: 'center',
type: 'hbox'
},
items: [
{
xtype: 'button',
iconAlign: 'center',
iconCls: 'info',
iconMask: true,
text: 'Ayuda'
},
{
xtype: 'button',
iconAlign: 'center',
iconCls: 'compose',
iconMask: true,
text: 'Guardar'
},
{
xtype: 'button',
id: 'volver',
iconAlign: 'center',
iconCls: 'reply',
iconMask: true,
text: 'Volver'
}
]
},
{
xtype: 'formpanel',
title: 'View',
html: 'View1',
id: 'View1',
styleHtmlContent: true,
items: [
{
xtype: 'button',
docked: 'bottom',
id: 'bView1',
margin: 10,
ui: 'forward',
text: 'siguiente'
}
]
}
]
}
});
view2.js:
Ext.define('MyApp.view.View2', {
extend: 'Ext.form.Panel',
alias: 'widget.View2',
config: {
fullscreen: true,
html: 'View2',
id: 'View2',
styleHtmlContent: true,
items: [
{
xtype: 'button',
docked: 'bottom',
id: 'bView2',
margin: 10,
ui: 'forward',
text: 'siguiente'
}
]
}
});
view3.js:
Ext.define('MyApp.view.View3', {
extend: 'Ext.form.Panel',
alias: 'widget.View3',
config: {
fullscreen: true,
html: 'View3',
id: 'View3',
styleHtmlContent: true,
items: [
{
xtype: 'button',
docked: 'bottom',
id: 'bView3',
margin: 10,
ui: 'forward',
text: 'siguiente'
}
]
}
});
ViewController.js:
Ext.define('MyApp.controller.ViewController', {
extend: 'Ext.app.Controller',
config: {
views: [
'View'
],
refs: {
bView1: 'bView1',
bView2: 'bView2'
},
control: {
"#bView1": {
tap: 'onView1'
},
"#bView2": {
tap: 'onView2'
}
}
},
onView1: function(button, e, options) {
button.up('navigationview').push({
xtype: 'View2',
title: 'View2'
});
},
onView2: function(button, e, options) {
button.up('navigationview').push({
xtype: 'View3',
title: 'View3'
});
}
});
An example of my problem is this: I start in view1, then I push button 'siguiente' and I go to view2. If I push button 'back' (in navigationView) I go view1, then I push button 'siguiente' and go view2, but in view2, I push button 'siguiente' I can't go view3.
Thank you very much in advance!
It's because you using id, so when you initiate it the second time it'll get conflict, show warning and function not working properly. You'll be safe if you use itemId.
itemId: 'bView1' //same for other view bView2, bView3
To reference your itemId in controller, just do like this for example:
refs: {
bView1: '[itemId=bView1]',
bhView2: '[itemId=bView2]',
bhView3: '[itemId=bView3]'
},
control: {
bView1: {
tap: 'onView1'
},
bhView2: {
tap: 'onView2'
},
},
onView1: function(button, e, options) {
button.up('navigationview').push({
xtype: 'View2',
title: 'View2'
});
},
onView2: function(button, e, options) {
button.up('navigationview').push({
xtype: 'View3',
title: 'View3'
});
}
Hope it helps :)
来源:https://stackoverflow.com/questions/14318814/navigation-view-sencha-touch-2