2016-05-12 4 views
0
расслоении плотной
<form id="form1" runat="server" ng-app="myapp"> 
    Parent Scope {{X}} 
    <br /> 

    <div my-customer> 
     <div ng-init="X ='Hello World'"> 
      ISOLATED SCOPE {{X}} 
     </div> 
    </div> 
</form> 

Директивыизолят Scope в угловой

angular.module('myapp', []) 
.directive('myCustomer',function() 
{ 
return { 
    restrict: 'A', 
    scope: {} 

} 

})

В коде выше, я создал пользовательские директивы с изолированной областью. Переменная X начинается с «Hello World» в изолированном объеме обычая directive.But я получаю ниже Выход

Parent Scope Hello World 
ISOLATED SCOPE Hello World 

Первая {{X}} должен быть пустым (поскольку пользовательские директивы изолировал сфера) но он имеет то же значение, что и второе {{X}}. Любая идея почему? Версия Angularjs:
AngularJS v1.5.3

+0

Я думаю, что область охвата - понятие угловых, но не html. расположение переменной в html не определяет область действия переменной. в вашем html, если вы определяете 'X' под' ng-app', это будет «Heollo World» независимо от того, где вы его размещаете –

+0

Но когда я устанавливаю область в true, она ведет себя так, как ожидалось. Родительский охват ИЗОЛИРОВАННЫЙ СФЕРА Hello World –

+0

@harmoniemand ответ имеет правильную идею. Я не думаю, что он решает его так, как вы хотите, но он прав, предлагая, чтобы область применения не применялась. Для директив вы склонны использовать шаблоны, а не встраивать DOM. Попробуйте использовать '

0

Сфера применения просто не применяется в этой точке.

Вы должны использовать опцию шаблона.

angular.module('myapp', []) 
 
    .controller('myCtrl', ['$scope', function($scope) { 
 
    $scope.foobar = "foobar"; 
 
    }]) 
 
    .directive('myCustomer', function() { 
 
    return { 
 
     restrict: 'EA', 
 
     scope: { 
 
     \t foobar: '@' 
 
     }, 
 
     template:"INNER SCOPE {{foobar}}", 
 
     controller: function($scope) { 
 
     \t $scope.foobar = "hello world"; 
 
     } 
 
    } 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<form id="form1" runat="server" ng-app="myapp" ng-controller="myCtrl"> 
 
    Parent Scope {{foobar}} 
 
    <br /> 
 

 
    <div my-customer foobar="Hallo welt" /> 
 
</form>

0

Я думаю, что использование виновником вашей проблемы нг-инициализации. В своей документации не рекомендуется их использование в этом way

NgInit работает с областью действия на этапе предварительной ссылки с высоким приоритетом и устанавливает значение в область.

Смежные вопросы