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 の return 関数の "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 に答える