Я использую директиву для создания пользовательского валидатора, и он отлично работает. Но это было вызвано только один раз! Если мои «roleItems» обновляются, эта директива не была вызвана снова! Как это можно вызвать каждый раз, когда обновляются «roleItems»?угловая директива была вызвана только
Вот наценки. И «Не-пустой» - моя директива.
<form name="projectEditor">
<ul name="roles" ng-model="project.roleItems" not-empty>
<li ng-repeat="role in project.roleItems"><span>{{role.label}}</span> </li>
<span ng-show="projectEditor.roles.$error.notEmpty">At least one role!</span>
</ul>
</form>
Это моя директива. Он должен проверить, являются ли ng-model "roleItems" пустыми.
angular.module("myApp", []).
directive('notEmpty', function() {
return {
require: 'ngModel',
link: function (scope, elm, attrs, ctrl) {
ctrl.$validators.notEmpty = function (modelValue, viewValue) {
if(!modelValue.length){
return false;
}
return true;
};
}
};
});
Что вы намерены использовать для модели ng? ng-model используется для привязки двунаправленных данных на таких компонентах, как входы, где пользователь может вводить значения, которые хранятся в модельной переменной. ul не может этого сделать. Это не имеет никакого смысла. Просто удалите эту директиву и используйте –