所以我试图将项目动态地放到具有slidenavigation功能的面板中:
// FlyoutNavigation.js
Ext.define("APN.view.FlyoutNavigation", {
id: "flyoutNavigationPanel",
扩展:'Ext.ux.slidenavigation.View',
这是view在另一个视图中的初始化:
// MainViewContainer.js
this.home = "一些变量"
this.flyout = Ext.create('APN.view.FlyoutNavigation', {
id: 'flyoutNavigationPanel',
家:this.home
});
比我在本this.config.items节中尝试使用这个变量,但是这不起作用,似乎 Sencha 先编译所有内容,然后初始化组件,我可能错了,我真的是 Sencha 框架的新手。
所以这里是home使用变量的视图:
Ext.define("APN.view.FlyoutNavigation", {
id: "flyoutNavigationPanel",
扩展:'Ext.ux.slidenavigation.View',
xtype: 'flyoutnavigation',
要求:[
...省略了很多东西...
],
初始化:函数(){
this.callParent();
this.setupDynamicItems();
},
配置:{
项目: [
{
itemId: 'nav_home',
id: 'homeView',
项目: [{
xtype: '文章列表',
id: '最新消息',
feedUrlName: this.home, // - 那就是 UNDEFINED 出现的地方
弹性:1
}
],
},
所以this.home未定义...
一个可能的解决方案 来自这个问题:如何在 Sencha Touch 中动态创建 xtype 模板
我决定把所有的代码都放进去,this.config.items.add({ ... my items ... })但是Ext.ux.slidenavigation.View看起来给了我BUG!:( 因为初始化方法发生在FlyoutNavigation视图项的绑定方法之后。
这是来自错误的消息:Uncaught TypeError: Cannot read property 'raw' of undefined View.js:310基本上是这一行:if (Ext.isFunction(item.raw.handler)) {
所以我的问题是
- 如何在 config.items 部分获取实例变量?如果那是可能的,那一切都还好
- 或者你知道这个问题的解决方法吗?
谢谢