Я пытаюсь реализовать директиву AngularJS, у которой есть собственная изолированная область, чтобы сделать ее повторно используемой на той же странице. Эта директива описывается шаблоном, который находится в другом файле, поэтому я использую параметр templateUrl.Доступ к области шаблонов из выделенной области
app.directive('inputSettings', function() {
return {
restrict: 'E',
transclude: true,
templateUrl: 'templates/admin/inputSettingsTemplate.html',
controller: 'InputSettingsCtrl',
scope: {
settingkey: '=',
value: '=',
range: '=',
check: '=',
autosave: '='
}
};
});
В этом шаблоне у меня есть форма с именем form
.
<form name="form" class="settingForm" novalidate>
<div class="form-group" ng-class="{ 'has-error' : form.input.$invalid, 'has-success' : form.input.$valid }">
<input class="form-control" name="input" type="text" ng-model="valueInput" />
<p ng-show="form.input.$invalid && !form.input.$pristine" class="help-block" translate="{{ 'inputSettingErrorMessage' | translate:translationData }}"></p>
</div>
</form>
У меня есть проблема в том, что я хочу, чтобы иметь возможность установить правильность ввода внутри шаблона, используя код, подобный приведенному ниже, в контроллере моей директивы:
$scope.form.input.$setValidity("input", true);
Но я имеют ошибку при попытке выполнить такой код. Кажется, что $scope
не знает форму, поэтому я не могу взаимодействовать с моей формой внутри контроллера моей директивы.
Есть ли у вас какие-либо идеи? Я что-то не так сделал?
Заранее благодарен!
Когда вы пытаетесь выполнить этот код? непосредственно во время инициализации контроллера? – FreeCandies
Нет в наблюдателе переменной $ scope.valueInput. Фактически, я хочу обновить действительность ввода при изменении значения. –
Я бы предложил проверить, что новое значение отличается от старого значения. Возможно, так, что наблюдатель запускается в первый раз (во время init), и в этот момент форма еще не находится в области видимости, поскольку контроллер запускается до привязки – FreeCandies