AngularJS - 可选的必需元素

时间:2012-12-22 23:21:46

标签: coffeescript angularjs

我正在尝试使用自定义指令来创建条件必需语句。我添加的第一个条件是'firstInArray'来使元素成为必需元素,如果它是选择数组中的第一个(对于你需要选择至少一个项目的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')
      }       
  ]) 

当我在我的指令中添加范围。$ apply()时,应用程序冻结(看起来像无限递归)。

有没有比自定义指令更好的方法来解决这个问题?如果没有,我的指令有什么问题?

1 个答案:

答案 0 :(得分:4)

您可以使用undocumented ng-required 指令,而不是您自己的自定义指令:

<li ng-repeat="itemObj in items">
   <input type="text" ng-model="itemObj.text" ng-required="$first">
</li>