"Сфера" в функции связывания директив - это корневая область, а не область действия директивы.

У меня есть директива следующим образом

.directive('ticketingChat', function() {
    return {
        restrict: 'E',
        templateUrl:  '/Reply/ReplyScreen', //cshtml from MVC page
        controller: 'TicketingChatController',
        link: function (scope, el, attr) {
            scope.writingTo = "Hey there!";
        }
    }
})

Я думал, что это создаст свою собственную область, а "область действия" позволит мне получить к ней доступ.

Вместо этого нг-инспектор показывает мне, что:

"Сфера" на самом деле является корневой сферой. Как я могу заставить директиву создать свою собственную дочернюю область? И как я могу получить доступ к этой области из функции связывания?

1 ответ

Решение

Настройка scope: true в определении директивы объект заставит AngularJS создать наследующую дочернюю область. настройка scope для объекта создаст изолированную дочернюю область.

Например:

.directive('ticketingChat', function() {
    return {
        restrict: 'E',
        templateUrl: '/Reply/ReplyScreen',
        controller: 'TicketingChatController',
        scope: true,
        link: function (scope, el, attr) {
           scope.writingTo = "Hey there!"; // This will be set on the child scope because we have scope: true.
        }
    }
})

Смотрите документы для более подробной информации о scope приписывать.

Другие вопросы по тегам