Si vous deviez aller plus loin que la vidéo "Getting Started with Sencha Touch 2" et ajouter des boutons de navigation sur la page d'accueil pour vous permettre d'accéder aux pages Blog et Contact, comment feriez-vous ? J'ai tout mis en place comme le fil de discussion Sencha Touch 2 MVC - comment changer de vue avec un bouton
Le problème que je rencontre est que si je crée un bouton pour aller à la page Blog dans la page Home.js, le bouton fonctionnera mais la liste imbriquée sur la page Blog.js ne fonctionne plus et la barre de titre de Main.js n'apparaît plus sur Blog.js non plus. Le code de mon contrôleur ressemble à ceci
control: {
'blog list': {
itemtap: 'showPost'
},
'button[go]':{
tap: function(){
Ext.Viewport.setActiveItem({
xtype: 'blog'
})
}
}
}
Où showPost est la même fonction que la vidéo GS. Mon bouton dans le fichier Home.js ressemble à ceci
items:[
{
xtype: 'button',
text: 'text',
go: 'buttonPage'
}]
}
Tout le reste est exactement comme la vidéo de la GS. Je veux que le bouton de la page Home.js fonctionne exactement comme les boutons de la barre de titre dans Main.js de la vidéo de démarrage. Que me manque-t-il ? Merci d'avance.
13/04/12 Mise à jour : tous les fichiers js. Ils sont tous essentiellement le code original de la vidéo GS.
vue/Main.js
Ext.define("GS.view.Main", {
extend: 'Ext.tab.Panel',
requires: ['Ext.TitleBar'],
config: {
xtype: 'bottombar',
tabBarPosition: 'bottom',
items:[{xtype: 'homepanel'},
{xtype: 'blog'}]}
});
vue/Home.js
Ext.define('GS.view.Home', {
extend: 'Ext.Panel',
xtype: 'homepanel',
config: {
title: 'Home',
iconCls: 'home',
items:[{
xtype: 'button',
text: 'text',
go: 'buttonPage'}]
}
})
vue/Blog.js
Ext.define('GS.view.Blog',{
extend: 'Ext.navigation.View',
xtype: 'blog',
requires: ['Ext.dataview.List', 'Ext.data.proxy.JsonP', 'Ext.data.Store'],
config: {
title: 'Blog',
iconCls: 'star',
items: [{
xtype: 'list',
itemTpl: '{title}',
title: 'Recent Posts',
store:{
autoLoad: true,
fields: ['title', 'author', 'content'],
proxy: {
type: 'jsonp',
url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://data.9msn.com.au/Services/Service.axd/feeds/rss/news/headlines',
reader: {
type: 'json',
rootProperty: 'responseData.feed.entries'
}
}
}
}]
}
})
contrôleur/Main.js
Ext.define('GS.controller.Main', {
extend: 'Ext.app.Controller',
config: {
refs: {
blog: 'blog'
},
control: {
'blog list': {
itemtap: 'showPost'
},
'button[go]':{
tap: function(){
Ext.Viewport.setActiveItem({
xtype: 'blog'
})
}
}
}
},
showPost: function(list, index, element, record){
this.getBlog().push({
xtype: 'panel',
title: record.get('title'),
html: record.get('content'),
scrollable: true,
styleHtmlContent: true,
})
}
});
app.js
Ext.application({
name: 'GS',
requires: ['Ext.MessageBox'],
controllers: ['Main'],
views: ['Main', 'Home', 'Blog'],
launch: function() {
Ext.Viewport.add(Ext.create('GS.view.Main'));
},
});