我应该在模型或商店中指定代理吗?

时间:2011-10-12 14:59:06

标签: javascript html5 extjs sencha-touch extjs4

我对跨平台移动开发比较陌生,最近一直在学习如何在我的应用程序中使用Sencha Touch的基本教程。我觉得他的方法不一致让我感到困惑。所以这是我的问题:

我正在使用MVC设计模式。在定义用于在应用程序中存储数据的代理时,我应该在模型中还是在商店中执行此操作?我已经看到两者都已完成,并且不确定哪个更好,或者每个应该使用的情况。以下是我的意思的例子:

商店

中定义的代理
App.stores.users = new Ext.data.Store({
    model: 'User',
    autoLoad: true,

    proxy: {
         type: 'localstorage',
         id: 'sencha-users'
    }
});

模型

中定义的代理
App.models.User = Ext.regModel('User', {
    fields: [
        {
            name: 'email',
            type: 'string'
        }, {
            name: 'firstname',
            type: 'string'
        }, {
            name: 'lastname',
            type: 'string'
        }, {
            name: 'password',
            type: 'string'
        }
    ],

    proxy: {
        type: 'localstorage',
        id: 'sencha-users'
    }
});

1 个答案:

答案 0 :(得分:4)

他们不赞成你,因为这是一个实施决定。将它与模型联系起来的便利性决定了强烈的一对一关系。

在ExtJS 3.3.1及更低版本中,代理始终与商店绑定。直到Sencha Touch和ExtJS 4才允许你直接与模特绑定。

我能想到将它与模型联系起来的最好理由是让它保持独立。

  

直接在模型上定义代理是第4版中的一种新方法 - 它的主要好处是我们可以轻松加载和保存模型数据而无需创建存储,就像我们在ExtJS 3中所做的那样。

修改

很抱歉,如果我的解释有点高。

商店视为模型的集合。

商店可以通过使用为商店定义的代理来自我了解如何填充这些模型。 模型可能已经知道如何通过定义代理来填充自己。

如果我没有说清楚,请告诉我。 :)