我正在尝试使用自定义指令来创建条件必需语句。我添加的第一个条件是'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()时,应用程序冻结(看起来像无限递归)。
有没有比自定义指令更好的方法来解决这个问题?如果没有,我的指令有什么问题?
答案 0 :(得分:4)
您可以使用undocumented ng-required 指令,而不是您自己的自定义指令:
<li ng-repeat="itemObj in items">
<input type="text" ng-model="itemObj.text" ng-required="$first">
</li>