0

我正在使用下面显示的代码在 Ember-Model 中保存新记录。

var saveResult = this.get('model').save();  
saveResult.then (function(value) {$('#statusArea').html('Save succedded.\n'),
                 function(value) {$('#statusArea').html('Save failed.\n')});

一切都在服务器端按预期工作。我可以看到正确的“发布”消息,并且能够将数据保存到数据库。但是无论我从服务器返回什么状态(我尝试过 200、201 和 204),promise 总是落入失败的例程。我有两个问题:

1) 我是否在上面显示的代码中正确使用了 Ember-Model 返回的 Ember.RSVP.promise?

2)如果是,我必须从服务器返回什么来反映成功?我对服务器端有完全的控制权,基本上可以返回任何必要的东西。

4

1 回答 1

0

是的,你是

创建自己的 rest 适配器并覆盖 save 方法

App.MyRestAdapter = Ember.RESTAdapter.extend({

  saveRecord: function(record) {
    var primaryKey = get(record.constructor, 'primaryKey'),
      url = this.buildURL(record.constructor, get(record, primaryKey)),
      self = this;

  // this is the default implementation, you're blowing up on self.didSaveRecord,
  // you should laugh a little bit noting the todo to implement an api that doesn't
  // return data :)

  //  return this.ajax(url, record.toJSON(), "PUT").then(function(data) {  // TODO: Some APIs may or may not return data
  //    self.didSaveRecord(record, data);
  //    return record;
  //  });

      // technically you could just do
      // return this.ajax(url, record.toJSON(), "PUT");
      // but if you ever want to massage it based on the response in the future, here's the spot
      return this.ajax(url, record.toJSON(), "PUT").then(function(data) {
        return record;
      });

  },
于 2013-11-20T02:52:16.960 回答