【问题标题】:Dynamically add xtype items to the panel with slidenavigatoin使用 slidenavigatoin 将 xtype 项目动态添加到面板
【发布时间】:2013-05-20 07:48:47
【问题描述】:

所以我试图将项目动态地放到具有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 未定义...

一种可能的解决方案 来自这个问题:How to dynamically create xtype templates in Sencha Touch

我决定将所有代码放在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)) {

所以我的问题是

  1. 如何获取config.items部分的实例变量?如果可以,那就万事大吉了
  2. 或者您知道解决此问题的方法吗?

谢谢

【问题讨论】:

    标签: extjs sencha-touch


    【解决方案1】:

    我不认为你可以在定义类时使用this.config,而是可以使用我之前告诉你的初始化函数。所以你应该能够做到这一点:

    initialize : function() {
        var me = this;
        var home = me.config.home;
        me.add({
            itemId: 'nav_home',
            id: 'homeView',
            items: [{
                    xtype: 'articlelist',
                    id: 'latestNews',
                    feedUrlName: home,
                    flex: 1
                }
            ],
        });
    }
    

    或者如果你在父类中定义了homeView,你可以这样做:

    initialize : function() {
        var me = this;
        var home = me.config.home;
        me.down('#homeView').add({
            xtype: 'articlelist',
            id: 'latestNews',
            feedUrlName: home,
            flex: 1
        });
    }
    

    【讨论】:

    • Uncaught TypeError: Object [object Object] has no method 'getDocked' 好像items: [] 会返回这个问题
    • 据我所知,项目必须在初始化之前声明
    • 我移动了一些东西来初始化,仍然不知道getDocked有什么问题
    • 还有一个问题相信你应该很熟悉:) stackoverflow.com/questions/16661061/…
    • @DanMyasnikov 我的电子邮件 ID 在个人资料中,您可以使用它与我联系以获取未来的交易;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多