con*_*com 3 javascript ember.js
我正在通过"入门"页面的入门教程学习如何使用EmberJS.但是,当我进入"接受编辑"部分时,我有一个错误:
Uncaught Error: Attempted to handle event `willCommit` on <Todos.Todo:ember304:3> while in state root.loaded.updated.inFlight.
Run Code Online (Sandbox Code Playgroud)
呼叫Todos.TodoController.acceptChanges()
似乎触发了这个错误.我所指的部分是这一部分:http:
//emberjs.com/guides/getting-started/accepting-edits/
在阅读了Ember的模型生命周期后 - http://emberjs.com/guides/models/model-lifecycle/#toc_in-flight-我仍然不明白为什么会出现这个错误.
一个解决方法是每次更改模型时保存模型(因此每次更改的值都是如此<input>
.这样可以正常工作,但使用HTTP API可能表现不佳(而不是固件).
这可能是由于BC破坏了ember-data
lib的变化吗?还有什么可能导致这个?
我用过的库的版本:
jQuery:2.0.3
把手1.0.0
EmberJS:1.0.0 RC7
Ember数据:v0.13-102-g6bdebe7
int*_*xel 10
在阅读了Ember的模型生命周期后 - http://emberjs.com/guides/models/model-lifecycle/#toc_in-flight-我仍然不明白为什么会出现这个错误.
这不是一个错误,飞行中的部分说的就是这一切:
正在传输的记录是已提供给适配器以保存本地更改的脏记录.一旦服务器确认已成功保存更改,记录将变为干净.
这意味着您正在尝试更改记录,而之前的更改使其变脏并且可能的调用this.get('store').save()
仍在执行中,例如等待服务器响应.在此时间范围内,您无法在不收到错误的情况下对同一记录进行更改.
因此,一个解决方案可能是this.get('store').save()
在文本框的字符发生变化之后不会触发,而是在焦点输出之后,或者甚至使用显式按钮来保存您可以禁用的记录,直到您的服务器确认它的更改为止,这不会产生请求服务器上的每个字符,由于某些延迟导致性能低下.希望这是有道理的.
希望能帮助到你.
归档时间: |
|
查看次数: |
3572 次 |
最近记录: |