2015-05-15 4 views
1

У меня есть вопрос, такой код:угловая директива не область применения связывания данных

HTML:

<div class="overflow-hidden ag-center" world-data info="target"></div> 

ЯШ:

.directive('worldData', ['$interval', function($interval) { 
    return { 
     scope: { 
      chart: '=info' 
     }, 

     template: '<div>{{chart.aaa}}</div>', 

     link: function($scope, element, attrs) { 

      $scope.target = {'aaa': 'aaa'}; 

      aaa = $scope.chart; 
     } 
    } 
}]) 

значение диаграммы не определен, и не ШАБЛОН никакого значения , но когда я объявляю $ scope.target в контроллере, код работает, почему?

+0

Как работает ваш код, я ожидаю, что в родительской области директивы будет указано значение «target». Насколько мне известно, функция link не делает ничего, что должно повлиять на отображаемые значения. –

+0

Когда я использую это, 'link: function ($ scope, element, attrs) { \t \t \t $ scope.target = {'aaa': 'aaa'}; \t \t \t $ scope.chart = $ scope.target; \t \t} 'DOM визуализировать немедленно. И код отлично работает – jackieLin

+0

Ну конечно, потому что вы переопределяете диаграмму внутри директивы. 'chart: '= info'' предназначен для передачи данных извне директивы. В этом случае вы передаете 'target' (должно быть определено вне директивы, предположительно в контроллере) директиве через' info', которая сопоставляется с '$ scope.chart 'директивы. Вы определяете цель как соответствующие данные вне директивы, которая должна быть передана? –

ответ

1

Это должно быть в целом картина:

.controller('myController', function($scope){ 
    $scope.target = {'aaa': 'aaa'}; //In reality, you'd normally load this up via some other method, like $http. 
}) 

.directive('worldData', [function() { 
    return { 
     scope: { 
      chart: '=info' 
     }, 

     template: '<div>{{chart.aaa}}</div>' 
    } 
}]) 

-

<div ng-controller="myController"> 
    <div class="overflow-hidden ag-center" world-data info="target"></div> 
</div> 

В качестве альтернативы, директива может нести ответственность за собираемся и выборки данных, и не проходит ни в чем ему. Вы только хотели бы подумать, что если вам не нужны данные в нескольких местах.

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