没有商店的模特

时间:2013-01-22 13:47:41

标签: extjs extjs4 extjs4.1 extjs4.2

我创建了一个模型,其中包含一个代理来加载单个记录,并且它不带参数。我不想使用商店,因为我永远不会有一个以上的记录。我创建了Model的一个实例,但无法弄清楚如何告诉它调用并从服务器加载记录。这是我能找到的唯一例子,但我没有传递ID。

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

此外,我正在制作和ajax电话,而不是休息电话。

2 个答案:

答案 0 :(得分:1)

load(id, [config]) 是静态的,返回会为您提供新的记录实例。它使用通过 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
});

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

答案 1 :(得分:0)

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

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