我无法将数据从控制器传递到 Sencha Touch 2.4 中的视图

Posted

技术标签:

【中文标题】我无法将数据从控制器传递到 Sencha Touch 2.4 中的视图【英文标题】:I cannot pass data from controller to a view in Sencha Touch 2.4 【发布时间】:2015-07-03 07:15:42 【问题描述】:

我尝试了一些不同的方法,但无法将数据从控制器传递到视图(传递到容器内的组件)。

这里有ServisDetail.js的视图:

Ext.define('Asistan.view.ServisDetail', 
    extend: 'Ext.Container',
    xtype: 'servisDetail',
    config: 
        layout: 'fit',
        items : [
            
                xclass : 'Asistan.view.ServisToolbar'
            ,
            
                // "data: " is needed to work. I try to pass data from controller to here
                xtype: 'component',
                tpl: Ext.create('Ext.XTemplate','URUN_CIHAZ_ADI jkjk')
            
        ]
    
);

这是我的控制器Servis.js,我认为 认为它应该可以工作。但它没有传递数据:

Ext.define('Asistan.controller.Servis', 
    extend: 'Ext.app.Controller',
    config: 
        refs: 
            servis: 'servisNavigationView servisContainer list',
        ,
        control: 
            servis: 
                itemdoubletap: 'showServis'
            
        
    ,
    showServis: function(item, index, e, eOpts) 
        this.servis = Ext.widget('servisDetail');
        this.servis.config.items[1].data = eOpts.data; // <- Here! It doesn't work. console.log shows that the data is there but in the browser the data doesn't show up.
        console.log(this.servis.config.items[1].data); // I can see my data here, right before the push
        item.up('servisNavigationView').push(this.servis);
    
);

我错过了什么?

【问题讨论】:

【参考方案1】:

尝试使用

showServis: function(item, index, e, eOpts) 
    this.servis = Ext.widget('servisDetail');
    this.servis.setData(eOpts.data);  // setData applies the data to the container template.
    item.up('servisNavigationView').push(this.servis);

【讨论】:

你的代码将数据发送到容器,而不是tpl的组件。 您应该避免在 Sencha Touch 应用程序中使用 Ext.getCmp()。如果您的页面中有多个组件实例,您将遇到问题。请改用 Ext.ComponentQuery 方法。 我更喜欢使用 itemId 而不是 id,这样您就可以销毁视图并重新创建它们。【参考方案2】:

带有tpl 的项目应该有一个id


    id: 'itemWithTpl', // <- here
    xtype: 'component',
    tpl: Ext.create('Ext.XTemplate','URUN_CIHAZ_ADI jkjk')

还有控制器:

showServis: function(item, index, target, record, e, eOpts) 
    this.servis = Ext.widget('servisDetail');
    item.up('servisNavigationView').push(this.servis);
    Ext.getCmp('itemWithTpl').setData(record.data); // <- here

【讨论】:

以上是关于我无法将数据从控制器传递到 Sencha Touch 2.4 中的视图的主要内容,如果未能解决你的问题,请参考以下文章

使用控制器将参数从 Sencha Touch 2 中的视图发送到其他视图

Extjs 7,如何使用视图模型将动态数据从一个控制器传递到另一个控制器

Sencha Touch:如何更新数据存储以从控制器列出

从控制器将变量应用于视图中的按钮?Sencha Touch

sencha touch 将变量从组件传递到组件

在 Sencha Touch 2 中填充视图