我正在使用ember.js进行应用程序的UI端开发。对于每个动作我们都会显示一个模态弹出窗口,我们在弹出窗口中有表单,然后在表单提交时我们有一些具有控制器的相应操作。它的工作正常,如果我们正在进行Web服务调用,它将获取服务器响应并更新存储中的各个模型js文件。 因此,如果我们在特定文本字段中给出一些值,那么新的要求就是以这种形式出现,那么服务器调用应该去获取一些信息。现在的问题是,这个值没有在商店中更新。 html(模板)就像任何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对象是:
{ “有效载荷”:{ “xyzModel”:{ “GMP”:25.0, “类型”: “SOMETYPE”, “ID”:1}}, “状态”: “SUCCESS”}
并且js文件是
App.XyzModel = DS.Model.extend({
"type" : DS.attr(),
"gmp" : DS.attr()
});
服务器调用发生得很好,我的问题是为什么当我得到响应并且模型未找到错误时,ember存储没有得到更新。我谷歌很多但似乎没有人遇到同样的问题。我可能犯了什么错误。
答案 0 :(得分:2)
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