Я пытаюсь написать настраиваемую директиву, которая применяется к входному элементу, для которого требуется ngModel, и который добавляет парсер и функцию форматирования для ngModel.Угловая входная форматера/директива парсера и интерполированные атрибуты?
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу передать интерполированные значения в директиву, одновременно поддерживая привязку ngModel. Например, я хочу, чтобы иметь возможность использовать свою директиву в одном из двух способов:
проходя буквенные аргументы:
<input ng-model="foo" my-directive="120" />
или передачи интерполированных аргументы из текущей области:
<input ng-model="foo" my-directive="{{bar}}" />
...
function MyCtrl($scope) {
$scope.bar = "120";
}
Если Я прочитал аргумент атрибутов функции ссылки в моем определении директивы, я могу получить значение атрибутов.myDirective в первом использовании, но во втором использовании значение myDirective не определено.
Теперь, если добавить изолированную сферу к определению директивы:
scope: { myDirective: '@' }
Тогда scope.myDirective определяется и интерполированное в сценариях выше, но теперь ngModel сломана. Мои функции парсера/форматирования передаются неопределенными для их входных аргументов. Что происходит, и как я могу реализовать поведение, которое я хочу?
директива:
module.directive('myDirective', function() {
return {
restrict: 'A',
require: 'ngModel',
replace: false,
link: function (scope, elm, attrs, ctrl) { // attrs.myDirective not interpolated
Можете ли вы опубликовать код для своей директивы? Моя догадка заключается в том, что вы не можете использовать ключ 'require', который даст вам доступ к контроллеру' ngModel'. – satchmorun