具有belongsTo关系的ember-data中的model.save()计时问题

时间:2014-02-06 09:11:31

标签: javascript ember.js ember-data

我有两个模型(sourceproblem),当通过用户界面触发click时,我正在保存与另一个相关的实例。

App.SourcesController = Ember.ArrayController.extend
  actions:
    addProblem: (source) ->
      problem = @store.createRecord('problem',
        detectedOn: new Date(),
        source: source
      )
      problem.save().then (problem) ->
          # handle success
        ,(e) ->
          # handle error
      false

我确信在source操作中存在addProblem,但当客户端实际序列化模型并发送请求时,detectedOn属性存在,但{{1无处可寻。

现在,这是有趣的部分。

当我将保存代码包装在source_id中时,setTimeoutdetectedOn都会被发送到服务器:

source_id

在我看来,这是Ember周期中的时间问题,或者我错过了什么?

如何摆脱App.SourcesController = Ember.ArrayController.extend actions: addProblem: (source) -> problem = @store.createRecord('problem', detectedOn: new Date(), source: source ) setTimeout -> problem.save().then (problem) -> # handle success ,(e) -> # handle error , 1 false ?我每次保存都不应该这样做。

1 个答案:

答案 0 :(得分:0)

我通过在解决诺言时手动设置反向关系来解决这个问题。以下内容对您有用:

App.SourcesController = Ember.ArrayController.extend
  actions:
    addProblem: (source) ->
      problem = @store.createRecord('problem',
        detectedOn: new Date(),
        source: source
      )
      problem.save().then (problem) ->
          source.get('problems').addObject(problem)
        ,(e) ->
          # handle error
      false