17

这是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 时,这些都不会导致第二次触发更改事件。

4

2 回答 2

26

手动触发更改事件:

t.model.trigger('change', t.model);

或者

t.model.trigger('change:fieldErrors', t.model, newFieldErrorsValue);
于 2013-04-11T22:27:03.687 回答
0
this.model.set({fieldErrors: JSONResponse}, {silent:true});
this.model.trigger('change:fieldErrors');

看到这个对话:

我可以强制更新模型的属性以注册为更改,即使它不是?

于 2019-12-11T09:58:10.150 回答