1

我正在尝试使用自定义指令来制作有条件的必需语句。我添加的第一个条件是“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')
      }       
  ]) 

当我在指令中添加 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 回答