1

カスタム ディレクティブを使用して、条件付きの必須ステートメントを作成しようとしています。追加した最初の条件は「firstInArray」で、選択肢の配列の最初の要素である場合に要素を必須にします (少なくとも 1 つの項目を選択する必要がある UI に必要ですが、無制限に多くの項目を選択できます)。

  .directive('variableRequired', [
    ()->
      return {
        require: 'ngModel',
        link: (scope, el, attrs, ctrl)->
          vars = attrs.variableRequired.split(',')
          condition = vars[0]
          if condition is 'firstInArray'
            item = vars[1]
            arr = vars[2]
            if scope[item] == scope[arr][0]
              $(el).removeAttr('variable-required')
              $(el).attr('required', 'required')
      }       
  ]) 

ディレクティブ内に scope.$apply() を追加すると、アプリがフリーズします (無限再帰のようです)。

カスタムディレクティブよりもこれにアプローチする良い方法はありますか? そうでない場合、私のディレクティブの何が問題になっていますか?

4

1 に答える 1

4

独自のカスタムディレクティブの代わりに、文書化されていない ng-requiredディレクティブを使用できる場合があります。

<li ng-repeat="itemObj in items">
   <input type="text" ng-model="itemObj.text" ng-required="$first">
</li>
于 2012-12-23T01:47:57.670 に答える