我有两个模型(source
和problem
),当通过用户界面触发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
中时,setTimeout
和detectedOn
都会被发送到服务器:
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
?我每次保存都不应该这样做。
答案 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