gpt4 book ai didi

javascript - 尝试在状态 root.loaded.updated.inFlight 中处理事件 `willCommit`

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:11 25 4
gpt4 key购买 nike

我正在通过学​​习“入门”页面上的介绍性教程来学习如何使用 EmberJS。但是,当我到达“接受编辑”部分时,我遇到了一个错误:

Uncaught Error: Attempted to handle event `willCommit` on <Todos.Todo:ember304:3> while in state root.loaded.updated.inFlight. 

调用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 中发生了重大变化吗?库?还有什么可能导致这种情况?


我使用过的库版本:

jQuery: 2.0.3

Handlebars 1.0.0

EmberJS:1.0.0 RC7

Ember 数据:v0.13-102-g6bdebe7

最佳答案

After reading up on model lifecycle in Ember - http://emberjs.com/guides/models/model-lifecycle/#toc_in-flight - I still don't get why this bug appears.

这不是错误,机上部分说明了一切:

A record that is in-flight is a dirty record that has been given to the adapter to save the changes made locally. Once the server has acknowledged that the changes have been saved successfully, the record will become clean.

这意味着您正在尝试更改记录,而之前的更改使其变脏并且可能调用 this.get('store').save() 仍在进行中,例如等待服务器响应。在此时间范围内,您无法在不收到错误的情况下更改同一条记录。

因此,一个解决方案可能是在文本框的字符发生更改后不触发 this.get('store').save() 而是聚焦在焦点上,例如,甚至使用明确的按钮来保存您可以禁用的记录,直到您的服务器确认它的更改,这不会向服务器请求每个字符,导致由于某些延迟而导致性能低下。希望这是有道理的。

希望对您有所帮助。

关于javascript - 尝试在状态 root.loaded.updated.inFlight 中处理事件 `willCommit`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com