【发布时间】:2013-04-11 22:07:53
【问题描述】:
backbone.js 的一个已知特性是,当您设置未更改的数据时,它不会触发更改事件,也不会通过验证。但是,我需要触发 change 事件,因为我正在存储来自 AJAX 调用的 JSON 响应,该调用存储后端验证的结果。如果用户在同一字段留空的情况下继续提交表单,则后端验证将返回相同的 JSON 结果,当我将其保存到模型时,它不会触发更改事件。
我在将数据设置到模型中的 AJAX 成功回调中尝试了一些事情:
尝试的解决方案 #1
t.model.unset('fieldErrors',{silent: true});
t.model.set({fieldErrors: JSONResponse});
尝试的解决方案 #2
t.model.set({fieldErrors: null},{silent: true});
t.model.set({fieldErrors: JSONResponse});
当进行调用并且用户具有相同的 JSONResponse 时,这些都不会导致第二次触发更改事件。
【问题讨论】:
-
如果您不怕样板,请参阅 ScottPuleo 的回答。否则,您可以覆盖
Model#set方法以始终触发自定义事件(如果您有兴趣,我会发布答案)。
标签: backbone.js