没有商店的模型

Posted

技术标签:

【中文标题】没有商店的模型【英文标题】:Model without a Store 【发布时间】:2013-01-22 13:47:40 【问题描述】:

我创建了一个模型,其中包含一个代理来加载单个记录并且它不接受任何参数。我不想使用商店,因为我永远不会拥有超过一张唱片。我创建了模型的一个实例,但不知道如何告诉它从服务器调用和加载记录。这是我能找到的唯一示例,但我没有要传递的 id。

User.load(123, 
success: function(user) 
    console.log("Loaded user 123: " + user.get('name'));

);

此外,我正在拨打 ajax 电话,而不是休息电话,以防万一。

【问题讨论】:

【参考方案1】:

load(id, [config]) 是静态的,会return 为您提供一个新的记录实例。它使用通过 setProxy(proxy) 设置的代理(也是静态的)。默认情况下,它将发送带有参数id: 123 的读取请求。静态方法允许您在可选配置对象中设置一些默认回调。需要这些回调来获取已加载记录(或错误)的实例。

工作原理

// create a Model class
Ext.define('MyApp.User', 
    extend: 'Ext.data.Model',
    fields: [
        name: 'id', type: 'int',
        name: 'name', type: 'string'
    ]
);

// apply a proxy instance
MyApp.User.setProxy(/*YourAjaxProxy*/);

// prepare a handler
var cb = function(model, op) 
    // log the new model instance
    console.log(model);
;

// get a instance
MyApp.User.load(123, 
    scope: this, // should be the scope of the callback (cb)
    success: cb
);

不是你需要的?只是评论...

【讨论】:

谢谢,我会试一试,让你知道。 做到了,它似乎工作唯一的问题是它似乎没有向 Ext.ModelManager 注册。我需要它,以便我可以访问应用程序中的其他位置。 @theboulderer 我猜你对Ext.ModelManager 有误解。与Ext.StoreManager 一样,ModelManager 存储模型配置而不是实例。再次与 StoreManager 相比,您不能使用它来接收应用程序范围内的 ModelInstance。为此,您需要编写自己的 Manager 类或使用简化的方法,将 MixedCollection 类型的属性添加到 Ext.app.Application(例如 ModelMgr),注册 appProperty(例如 appProperty:'Instance',appName:'App '). 你不能调用 App.Instance.ModelMgr.get(User')。在回调中添加它们 感谢您的解释。【参考方案2】:

只需发出一个 Ajax 请求并将结果存储在一个变量中。

 Ext.Ajax.request(
                    url: '/data/get',
                    method: 'GET',
                    params: 
                        requestID: 'XXXX',
                        connName: 'yyyy'
                    ,
                    success: function (responseData) 
                       var countResult = Ext.decode(responseData.responseText);                      
                );

【讨论】:

以上是关于没有商店的模型的主要内容,如果未能解决你的问题,请参考以下文章

应用商店安装流程

核心数据设计:更好的 1 模型和 2 商店或 2 模型和 2 商店?

如何使 EXT JS 模型和代理商店工作? (请帮忙!)

ExtJS 4(MVC)商店不使用我的自定义模型类

用于打开商店的模型与用于创建商店的模型不兼容

forms.py 使用 ForeignKey 模型创建表单。商店应该只能将产品添加到自己的商店。 (姜戈)