所以我试图将项目动态地放到具有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 部分获取实例变量?如果那是可能的,那一切都还好
- 或者你知道这个问题的解决方法吗?
谢谢