Javascript 余烬数据DS.Model';s设置功能不工作?

Javascript 余烬数据DS.Model';s设置功能不工作?,javascript,ember.js,Javascript,Ember.js,在Ember Data中,在声明模型并提交到存储区后,我检索该模型并尝试为特定字段设置新值,但它给了我以下错误: Uncaught Error: <DS.StateManager:ember227> could not respond to event setProperty in state rootState.loaded.created.inFlight. Ember.StateManager.Ember.State.extend.sendRecursively ember-l

在Ember Data中,在声明模型并提交到存储区后,我检索该模型并尝试为特定字段设置新值,但它给了我以下错误:

Uncaught Error: <DS.StateManager:ember227> could not respond to event setProperty in state rootState.loaded.created.inFlight.
Ember.StateManager.Ember.State.extend.sendRecursively ember-latest.min.js:17
Ember.StateManager.Ember.State.extend.sendRecursively ember-latest.min.js:17
Ember.StateManager.Ember.State.extend.sendRecursively ember-latest.min.js:17
Ember.StateManager.Ember.State.extend.sendRecursively ember-latest.min.js:17
Ember.StateManager.Ember.State.extend.sendRecursively ember-latest.min.js:17
Ember.StateManager.Ember.State.extend.send ember-latest.min.js:17
DS.Model.Ember.Object.extend.send ember-data.js:2540
DS.Model.Ember.Object.extend.setProperty ember-data.js:2549
(anonymous function) ember-data.js:2682
n.set ember-latest.min.js:14
c ember-latest.min.js:14
Ember.Observable.Ember.Mixin.create.set ember-latest.min.js:15
(anonymous function)

此错误源于在通过API调用保存记录时试图修改记录。在您的示例中,
App.store.commit()
启动一个ajax操作,将新记录的详细信息发送到API。Ajax调用是异步操作,因此记录进入
inFlight
状态,直到API响应,如果一切都成功,ember数据将把记录转换回
clean
。虽然它是
机上
,但不能修改

此错误源于在通过API调用保存记录时试图修改记录。在您的示例中,
App.store.commit()
启动一个ajax操作,将新记录的详细信息发送到API。Ajax调用是异步操作,因此记录进入
inFlight
状态,直到API响应,如果一切都成功,ember数据将把记录转换回
clean
。虽然它是
机上
,但不能修改

试着这样做:

var update = function(){
  if(mod.isLoaded()){
    mod1.set('storageID', 10);
  }
}.observes('mod.isLoaded')
试着这样做:

var update = function(){
  if(mod.isLoaded()){
    mod1.set('storageID', 10);
  }
}.observes('mod.isLoaded')

我想你可能试图在数据完全加载之前进行设置,尝试在我的回答中使用observer,不确定这是否是正确的解决方案,或者你可以编写一个小提琴?我想你可能试图在数据完全加载之前进行设置,尝试在我的回答中使用observer,不确定它是否是正确的解决方案,或者您可以编写一个fiddle?也许模型上也有一个
didLoad
处理程序来做同样的事情?不确定“didLoad”,但我在我的项目中使用“isLoaded”&虽然它工作得很好……我尝试了didLoad,但不起作用+1给你:)也许模型上还有一个
didLoad
处理程序来做同样的事情?不确定“didLoad”是否正确,但我在我的项目中使用了“isLoaded”&虽然它工作得很好……我尝试了一些使用didLoad的方法,但不起作用+1对于您:)+1对于解释,您能提供一个解决方案来解决这个问题吗?您可以重写RESTAdapter以立即调用didCreateRecord(…),而不是等待ajax调用完成。这有相关的风险——如果ajax调用失败,你的应用程序和服务器将不同步。好吧,事实上,这不是一个很好的主意,似乎@Unspecified的解决方案在这些情况下效果很好。+1作为解释,你能提供一个解决方案来解决这个问题吗?你可以覆盖RestaAdapter来调用didCreateRecord(…)立即而不是等待ajax调用完成。这有相关的风险——如果ajax调用失败,你的应用程序和服务器就不同步了。好吧,事实上,这不是一个很好的主意,@Unspecified的解决方案似乎适合这些情况。