Sencha Touch 使用 mvc 动态使用商店?

Posted

技术标签:

【中文标题】Sencha Touch 使用 mvc 动态使用商店?【英文标题】:Sencha Touch dynamically use of stores with mvc? 【发布时间】:2012-12-10 11:22:45 【问题描述】:

所以这是问题所在,我使用 MVC,并且我在 app.js 上声明了几个商店。

但是现在我需要做一个登录验证,并且只有在我得到服务器的响应后才加载商店,但是如果在应用加载时将声明​​留在 app.js 中,它会自动加载所有商店。

这是我的应用需要做的事情:

LoginView 进行验证,如果验证成功,它会将视图更改为ListView,此视图有一个从商店加载数据的列表,此视图可以使用其他列表创建其他视图。

我试图要求 ListView 中的商店,但它会抛出错误 cannot call method getCount of null

我该怎么做才能让它发挥作用。感谢您的帮助。

这里有一些代码:

Ext.define("App.view.Listview", 
extend: 'Ext.Container',
xtype: 'listview',

requires: ['App.view.Listviewdetails',
    'App.view.Filtros.Fil***elaPrincipal.Janelafiltrotiempoview',
    'App.view.Menuview',
    'App.view.Resultadopesquisaview',
    'App.view.Pesquisaview',
    'App.view.Maisinfousuarioview',
    'Ext.Label',
    'Ext.field.Search',
    'App.store.Tiempos',
    'App.store.Empresas',
    'App.store.Produtos',
    'App.store.Usuarios',
    'App.store.FiltrosEvento',
    'App.store.Historicos',
    'App.store.Pesquisas'
],

config: 
    id: 'listView',
    layout: 'card',
    items: 
        layout: 'vbox',
        id: 'listaEventos',
        items: [
            
                xtype: 'list',
                id: 'listaTiempos',
                flex: 6,
                emptyText: 'Empty',
                store: 'Tiempos',
                itemTpl: 'dataTermino descricaoPrevia'
            
        ]
    

和其中一家商店:

Ext.define("App.store.Tiempos",
extend: 'Ext.data.Store',

config: 
    model: 'App.model.Tiempo',
    autoLoad: true,
    proxy: 'searchProxy'

);

【问题讨论】:

【参考方案1】:

您可以在各自的视图类中的 require 中添加商店。在 app.js 中添加不是强制性的。 所以登录后,当视图实例化时,商店将自动加载。

【讨论】:

我可以在一个视图中要求所有商店,此视图是层次结构中的顶层,还是我需要在我使用的所有视图中要求? 我所做的只是在需要的地方添加商店。而且一旦添加了一个类,我们就不需要再次添加require。这就是 Sencha 提供 view:[], store:[] 等来添加所有类的原因。

以上是关于Sencha Touch 使用 mvc 动态使用商店?的主要内容,如果未能解决你的问题,请参考以下文章

sencha touch :: 为视口动态创建面板

Sencha Touch 2 动态获取容器数据/存储

Sencha Touch 2:数据集成或如何在sencha和javascript之间共享动态信息

在 Sencha Touch 2 中为模型创建动态参数

Sencha Touch 2 MVC - 如何使用按钮切换视图

如何使用视图通过 MVC 在 Sencha Touch 2.0 中放置一个按钮