我应该在模型或存储中指定代理吗?

Should I specify the proxy in the Model or the Store?

本文关键字:代理 模型 存储 我应该      更新时间:2023-09-26

我是跨平台手机开发的新手,最近我学习了一些关于如何在我的应用中使用Sencha Touch的基本教程。在我看来,他们的方法不一致让我感到困惑。我的问题是:

我正在使用MVC设计模式。当在应用程序中定义用于存储数据的代理时,我应该在模型中还是在商店中这样做?我看过这两种方法,但不确定哪一种更好,或者哪一种应该使用。以下是我的意思的例子:

Store中定义的代理:
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'
    }
});

他们把它留给你,因为这是一个实现决策。将其绑定到模型的便利性决定了一个强的一对一关系。

在ExtJS 3.3.1及以下版本中,代理总是与存储绑定在一起。直到Sencha Touch和ExtJS 4,它们才允许你直接绑定到模型。

我能想到的把它和模型联系在一起的最好理由是保持它的自成一体。

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

编辑

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

Store视为模型的集合

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

如果我没有说清楚,请让我知道。:)