Я пытаюсь создать директиву, которая удалит атрибут disabled = "disabled" из всех полей ввода, содержащихся в форме, щелкнув ссылку редактирования.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я нажимаю на ссылку, хотя код директивы вызывается, я не передаю поля формы, единственное, к чему имеет доступ код, - это элемент ссылки.
Если бы кто-нибудь мог помочь мне сделать эту работу, это было бы мило.
Вот работа, которую я сделал до сих пор.
Мой html с директивой в качестве атрибута:
<a title="Edit record" ab-toggle-fields ng-click="pc.toggle()">
<i class="fa fa-fw fa-pencil"></i>
</a>
Функция переключения в контроллере, я не уверен, нужна ли мне эта часть, взяла ее из примера:
vm.toggle = function () {
};
Код директивы:
(function (define, angular) {
'use strict';
define(function () {
var toggleFieldsDirective = function () {
return {
scope: {
'ngClick': '&'
},
link: function (scope, elem, attrs) {
elem.bind('click', function () {
if (scope.ngClick){
var fields = elem.find(':input').not('button');
angular.forEach(fields, function (field) {
angular.element(field).removeAttr('disabled');
});
}
});
}
}
};
return [
toggleFieldsDirective
];
});
})(define, angular);
На самом деле самым чистым способом является простое использование директивы ng-disabled на ваших входах. Установите значение для некоторой переменной, которая будет переключаться по щелчку вашей ссылки. Как это:
<body>
<a href="#" title="Edit record" ng-click="isDisabled = !isDisabled" ng-init="isDisabled=false">
<i class="fa fa-fw fa-pencil"></i>
</a>
<div>
<input name="inputA" type="text" ng-disabled="isDisabled" />
</div>
<div>
<input name="inputB" type="text" ng-disabled="isDisabled" />
</div>