0

モデルの特定の属性のみを検証するにはどうすればよいですか?現在、validateに渡されたオブジェクトに属性が存在するかどうかを確認します。

validate: function(attrs) {

        // Number
        if (attrs.minimum) {
          if (isNaN(attrs.minimum)) {
            return -1;
          }
        }
        if (attrs.maximum) {
          if (isNaN(attrs.maximum)) {
            return -1;
          }
        }
}

しかし、文字列値を検証したい場合は、次のようにします。

if (attrs.mystring) {
 // Do validation
}

失敗し、検証は行われません。

4

2 に答える 2

0

私はあなたの言い回しに少し混乱していますが、最初に空の文字列ではないかどうかを確認したいと思いますか? また、それが未定義である可能性を解決します..もしそうなら、これはあなたがやりたいことです..

validate: function(attrs) {
    // Number
    if (attrs.minimum) {
      if (isNaN(attrs.minimum)) {
        return -1;
      }
    }
    if (attrs.maximum) {
      if (isNaN(attrs.maximum)) {
        return -1;
      }
    }
    if (typeof(attrs.mystring) != "undefined"){
      if (!attrs.mystring){
        return -1;
      }
    }
}

属性の 1 つだけを検証する場合は、それに応じてオプションに対応するように検証関数を作成する必要があります。

validate: function(attrs, option) {
  if (!option){
    // Number
    if (attrs.minimum) {
      if (isNaN(attrs.minimum)) {
        return -1;
      }
    }
    if (attrs.maximum) {
      if (isNaN(attrs.maximum)) {
        return -1;
      }
    }
    if (!attrs.mystring){
      return -1;
    }
  }else{
    switch(option){
      case("string"):
        if (!attrs.mystring){
          return -1;
        }
      break;
      case("number"):
        // Number
        if (attrs.minimum) {
          if (isNaN(attrs.minimum)) {
            return -1;
          }
        }
        if (attrs.maximum) {
          if (isNaN(attrs.maximum)) {
            return -1;
          }
        }
      break;
    }
  }
}

これを行うには多くの方法がありますが、これはおそらく最も効率的ではありませんが、あなたの例を使用すると、うまくいきます。

また、これは実際にはbackbone.jsの問題ではありません...しかし、一般的なjs

于 2012-04-16T20:15:42.767 に答える