主干验证范围问题

时间:2013-02-13 21:02:53

标签: validation backbone.js

我正在尝试在这里本地化一个应用程序,我在我的模型验证消息上做了类似的事情:

var userModel = Backbone.Model.extend({
     validate_msgs: {
     empty_name: msg.empty,
     min_length_name: msg.min,
         max_length_name: msg.length,
         invalid_name: msg.invalid
},

     validation: {
            name: [{
                required: true,
                msg: function(){ return this.validate_msgs.empty_name; }
            },{
                minLength: 3,
                msg: function(){ return this.validate_msgs.min_length_name; }
            },{
                maxLength: 30,
                msg: function(){ return this.validate_msgs.max_length_name; }
            }, {
                fn: "validateName"
            }]
        },

});

但msg的返回函数中的“this”始终指向视图,如:

Backbone.Validation.bind( this,  {valid:this.hideError, invalid:this.showError});

我该如何处理?有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

简单明了的解决方案是直接使用验证消息:

msg: msg.empty

但我认为您有理由将msg对象中的错误消息映射到模型上更具体的错误消息。您可以通过将验证消息定义为模型类上的静态属性来实现此目的,并直接使用模型类名称引用属性:

var UserModel = Backbone.Model.extend({
  validation: {
    name: [{
      required: true,
      msg: function() { return UserModel.validate_msgs.empty_name; }
    }]
  }
}, 
{
  validate_msgs: {
    empty_name: msg.empty,
    min_length_name: msg.min,
    max_length_name: msg.length,
    invalid_name: msg.invalid
  }
});