backbone.js的一个众所周知的特性是,当您设置未更改的数据时,它不会触发更改事件,也不会经过验证。但是,我需要触发change事件,因为我正在存储来自AJAX调用的JSON响应,该调用存储后端验证的结果。如果用户继续提交表单,同时将相同的字段留空,则后端验证将返回相同的JSON结果,并且当我将其保存到模型时,它不会触发更改事件。
在AJAX success回调中,我尝试了一些将数据设置到模型中的方法:
尝试的解决方案#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时,这两种方法都不会导致第二次触发更改事件。
发布于 2013-04-12 06:27:04
手动触发变更事件:
t.model.trigger('change', t.model);
或
t.model.trigger('change:fieldErrors', t.model, newFieldErrorsValue);
https://stackoverflow.com/questions/15959737
复制相似问题