【问题标题】:How to make sure to add response from server to ember store如何确保将服务器的响应添加到 ember 商店
【发布时间】:2014-10-16 12:20:19
【问题描述】:

我正在使用 ember.js 进行应用程序的 UI 端开发。对于每个动作,我们都会显示一个模态弹出窗口,并且在该弹出窗口中有表单,然后在表单提交时,我们有一些具有控制器的相应动作。到目前为止,它工作正常,如果我们正在进行 Web 服务调用,它会获取服务器响应并更新存储中的相应模型 js 文件。 所以新的要求来了,如果我们在特定的文本字段中给出一些值,那么服务器调用应该去获取一些信息。现在的问题是,这个值没有在存储中更新。 html(template) 就像任何 html 表单一样,mouseout 具有调用特定字段的一些操作。那个动作是

App.MainFormSubmitActionController = App.ModalController.extend({
needs : 'application',
actions : {
    actionToBeCalled : function() {
            this.store.find('xyzModel');            
            //the above line should normally find xyzModal in store if not found then hit server and then update the store too
        },
    mainFormSubmitAction : function() {
             //some task done here
             }
     }

});

我从服务器返回的 json 对象是:

{"payload":{"xyzModel":{"gmp":25.0,"type":"someType","id":1}},"status":"SUCCESS"}

js文件是

App.XyzModel = DS.Model.extend({
    "type" : DS.attr(),
    "gmp" : DS.attr()
});

服务器调用正常,我的问题是为什么当我收到响应并且未找到模型错误时 ember 商店没有更新。我用谷歌搜索了很多,但似乎没有人遇到过同样的问题。我可能做错了什么。

【问题讨论】:

  • 我仍然不确定这是什么原因,但我尝试了一件事,那就是我将输出中的 gmp 值转换为服务器中的字符串。在此之后,我的 ember 商店更新了这些值。它对任何人都有任何意义

标签: javascript jquery ember.js ember-data


【解决方案1】:

Ember 不希望模型数据包含在任何东西中,您可以做的是更改 api 行为,或者您可以像这样自定义应用程序或模型序列化程序以提取模型并将其设为顶级对象:

App.XyzModelSerializer = DS.RESTSerializer.extend({
  extractSingle: function(store, type, payload, id) {
    delete payload.payload.status;

    payload = {xyzModel: payload.payload.xyzModel };
    return this._super(store, type, payload, id);
  }
});

返回多条记录还有其他方法,见http://emberjs.com/api/data/classes/DS.RESTSerializer.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2022-12-24
    • 2022-11-27
    • 1970-01-01
    • 2023-03-07
    • 2013-12-07
    相关资源
    最近更新 更多