值不更改时触发backbone.js更改

yebdmbv4  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(127)

这是backbone.js的一个已知特性,当您设置未更改的数据时,它不会触发change事件,也不会进行验证。但是,我需要触发change事件,因为我正在存储来自 AJAX 调用的JSON响应,该响应存储后端验证的结果。如果用户在提交表单时将同一字段留空,后端验证将返回相同的JSON结果,并且当我将其保存到模型中时,它不会触发change事件。
我在 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时,这两种情况都不会导致第二次触发change事件。

bgibtngc

bgibtngc1#

手动触发更改事件:

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

t.model.trigger('change:fieldErrors', t.model, newFieldErrorsValue);
kzmpq1sx

kzmpq1sx2#

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?

相关问题