"use strict";
angular.module("foo")
.directive("breadcrumbs", function($rootScope, $timeout) {
return {
replace: true,
scope: false,
templateUrl: '/js/shared/directives/breadcrumbs.tpl.html',
link: function(scope, element, attrs, controller, transcludeFn){
console.debug(scope.parent);
...
Иногда scope.parent
является объемом текущего контроллера, иногда это $rootScope
. Я обнаружил, что, когда мой заказ директива используется так:Угловой ссылка директивы() функция прием несовместимой сфера
<breadcrumbs></breadcrumbs>
получает объем контроллера, но при использовании нг-если:
<breadcrumbs ng-if="searchData"></breadcrumbs>
получает новую область вложен в пределах область управления.
Как написать свою директиву, чтобы всегда получать область управления, не прибегая к хакерству (например, добавление ng-if="true"
)?
Обновление: я исправил описание проблемы. Проблема в том, что я получаю области на разных уровнях вложенности в зависимости от того, используется ли ng-if
, независимо от того, использовался ли scope: false
или scope: true
.
См. Это https://github.com/angular/angular.js/wiki/Understanding-Scopes –