Backbone文档说:
如果验证失败,Model.set将失败 - 它不会设置值,因此它不会触发任何回调.我们可以将{silent:true}传递给Model.set - 然后它将设置值但不会触发任何回调.
所以,
为什么Backbone Model需要有效状态才能简单地设置属性值?如果我们想在用户与UI交互时设置属性,但模型无效,该怎么办?这意味着更改回调不可用,除非我们通过{silent:true}然后手动触发更改?!
请说你知道更好的处理方式:)
我不确定如何回答“为什么”问题,但您可以说,对于为什么 set 运行验证是好的,有一些争论。例如,它使实时进行客户端验证变得非常简单。
如果您的问题可以通过仅验证用户当前正在更改的值来解决,那么您可以通过将您的validate方法与该hasChanged方法相结合来做到这一点。
例如这样的事情:
Backbone.Model.extend({
defaults : { name : "" },
validate : function (attrs) {
var errors = {};
if(this.hasChanged("name") && attr.name.length == 0) {
errors.name = "Need a name yo!";
}
//...
if(_.keys(errors).length > 0) {
return errors;
}
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3131 次 |
| 最近记录: |