У меня есть массив элементов, где каждый элемент привязан к директиве. Когда массив сначала построен, все хорошо, но когда я возвращаю массив новым значениям, функции ссылок для директив не срабатывают. Вот HTML, где каждый элемент массива кадра содержит ряд элементов, каждый из которых связан с моей директивы, прохладного диаграммыУгловая связь не срабатывает при изменении данных
var app = angular.module("theapp", []);
app.controller("controller", function($scope) {
$scope.frames = []
$scope.getData = function() {
var frames = ["adsf","qwerty"];
alert("got new Data")
$scope.frames.push(frames)
}
});
app.directive('coolChart', function() {
return {
restrict: 'E',
scope: {
data: '=data'
},
link: function(scope, element) {
data = data.toUpperCase();
alert("Link called with: " + data)
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="theapp">
<div ng-controller="controller">
{{frames}}asdf
<button ng-click="getData()">run get Data</button>
<div class="outer-frame" ng-repeat="frame in frames track by $index">
{{frame}}
<div class="chart-container" ng-repeat="item in frame track by $index">
{{item}}
<cool-chart data="item"></cool-chart>
</div>
</div>
</div>
</body>
Вы заметите, что вы видите alert "получил новые данные", но функция директивной ссылки не вызывается.
Я думаю об этом неправильно? Какая здесь правильная структура для замены содержимого массива, чтобы данные, привязанные к каждому элементу массива, запускали правильные уведомления об изменениях?
Функция ссылку вызывается, однако функция ссылка должна ссылаться на «scope.data», а не только данные. Мой ответ ниже имеет рабочее решение. – Urielzen