没有商店的模型
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);
);
【讨论】:
以上是关于没有商店的模型的主要内容,如果未能解决你的问题,请参考以下文章