如果您打算更进一步地观看“Sencha Touch 2 入门”视频,并在主页上添加按钮导航以允许您转到博客和联系页面,您会怎么做?我已经像线程 Sencha Touch 2 MVC 一样设置了所有内容- 如何使用按钮切换视图
我遇到的问题是,如果我创建一个按钮以转到 Home.js 页面中的博客页面,该按钮将起作用,但是 Blog.js 页面上的嵌套列表不再起作用,并且 Main 中的 TitleBar .js 也不再出现在 Blog.js 上。我的控制器代码如下所示
control: {
'blog list': {
itemtap: 'showPost'
},
'button[go]':{
tap: function(){
Ext.Viewport.setActiveItem({
xtype: 'blog'
})
}
}
}
其中 showPost 与 GS 视频的功能相同。我在 Home.js 文件上的按钮如下所示
items:[
{
xtype: 'button',
text: 'text',
go: 'buttonPage'
}]
}
其他一切都与 GS 视频完全相同。我希望 Home.js 页面上的按钮与入门视频中 Main.js 中 TitleBar 上的按钮完全相同。我错过了什么?提前致谢。
2012 年 4 月 13 日更新:所有 js 文件。它们本质上都是原始的 GS 视频代码。
查看/Main.js
Ext.define("GS.view.Main", {
extend: 'Ext.tab.Panel',
requires: ['Ext.TitleBar'],
config: {
xtype: 'bottombar',
tabBarPosition: 'bottom',
items:[{xtype: 'homepanel'},
{xtype: 'blog'}]}
});
查看/Home.js
Ext.define('GS.view.Home', {
extend: 'Ext.Panel',
xtype: 'homepanel',
config: {
title: 'Home',
iconCls: 'home',
items:[{
xtype: 'button',
text: 'text',
go: 'buttonPage'}]
}
})
查看/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'
}
}
}
}]
}
})
控制器/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,
})
}
});
应用程序.js
Ext.application({
name: 'GS',
requires: ['Ext.MessageBox'],
controllers: ['Main'],
views: ['Main', 'Home', 'Blog'],
launch: function() {
Ext.Viewport.add(Ext.create('GS.view.Main'));
},
});