Передача переменной из области контроллера в директиву

В моем контроллере я определил $scope.worker, который является простым JS-объектом:

{
    name: 'Peter',
    phone: 601002003
}

Я создал директиву:

.directive('phoneType', [function () {
    return {
        restrict: 'A',
        link: function (scope, element, attrs) {
            console.log(attrs);
        }
    };
}])

и мой HTML выглядит так:

<span phone-type="worker.phone"></span>

Как передать worker.phone (в этом примере 601002003) из области управления в директиву, чтобы я мог создать свою логику в методе link? attrs.phoneType прямо сейчас показывает мне строку worker.phone.

Ответ 1

Вы также можете передать значение директиве с помощью двусторонней привязки:

.directive('phoneType', [function () {
    return {
        scope: {
          phoneNumber: '=phoneType'
        }
        link: function (scope, element, attrs) {
            // now do stuff with the number, you can access it through the scope
            scope.phoneNumber // contains the number
        }
    };
}])

Теперь вы можете получить доступ к номеру непосредственно через область изоляции. Шаблон будет выглядеть так:

<span phone-type="worker.phone"></span>

Кстати, вам не нужен ограничитель A. Это поведение по умолчанию.