Я пытаюсь написать настраиваемую директиву, которая применяется к элементу ввода, для которого требуется ngModel и которая добавляет синтаксический анализатор и функцию форматирования для ngModel.
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу передать интерполированные значения в директиву, одновременно поддерживая привязку ngModel. Например, я хочу иметь возможность использовать мою директиву одним из двух способов:
передача буквальных аргументов:
<input ng-model="foo" my-directive="120" />
или передавая интерполированные аргументы из текущей области:
<input ng-model="foo" my-directive="{{bar}}" />
...
function MyCtrl($scope) {
$scope.bar = "120";
}
Если я прочитаю аргумент атрибутов функции ссылки в своем определении директивы, я могу получить значение attribute.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
. - person satchmorun   schedule 15.02.2013