【问题标题】: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 电话,而不是休息电话,以防万一。

【问题讨论】:

    标签: extjs extjs4 extjs4.1 extjs4.2


    【解决方案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);                      }
                    });
    

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 1970-01-01
      • 2015-02-21
      • 2022-01-18
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 2016-07-24
      • 2019-11-06
      相关资源
      最近更新 更多