0

我正在尝试在此处本地化应用程序,并在我的模型上使用类似的方式验证消息:

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});

我该如何处理?有没有更好的方法来做到这一点?

4

1 回答 1

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
  }
});
于 2013-02-13T21:58:34.837 回答