backbone.js的一个已知功能是,当您设置未更改的数据时,它不会触发更改事件,也不会通过验证。然而,当我存储来自存储后端验证结果的AJAX调用的JSON响应时,我需要触发更改事件。如果用户在将相同字段留空的情况下继续提交表单,则后端验证将返回相同的JSON结果,当我将其保存到模型时,它将不会触发更改事件。
我在AJAX成功回调中尝试过的一些事情,我将数据设置到模型中:
t.model.unset('fieldErrors',{silent: true});
t.model.set({fieldErrors: JSONResponse});
t.model.set({fieldErrors: null},{silent: true});
t.model.set({fieldErrors: JSONResponse});
这些都不会导致更改事件在进行调用时第二次触发并且用户具有相同的JSONResponse。
答案 0 :(得分:26)
手动触发更改事件:
t.model.trigger('change', t.model);
或
t.model.trigger('change:fieldErrors', t.model, newFieldErrorsValue);
答案 1 :(得分:0)
this.model.set({fieldErrors: JSONResponse}, {silent:true});
this.model.trigger('change:fieldErrors');
查看此对话:
Can I force an update to a model's attribute to register as a change even if it isn't?