Я строй директива пользовательского дерева:Angularjs 1.2.6: часы коллекция родительской области директивы
<ul tree="treeOptions">
<li>{{ item.code + ' - ' + item.name }}</li>
</ul>
В JavaScript:
$scope.myItems = [];
$scope.treeOptions = {
data: 'myItems',
...
}
В директиве:
(function (angular) {
'use strict';
angular.module('tree', []).
directive('tree', ['$compile', '$document', function ($compile,
$document) {
return {
restrict: 'A',
scope: { treeOptions: '=tree' }, //Isolated scope
compile: function (elem, attrs) {
//...
return function (scope, elem, attrs) {
//...
scope.$parent.$watchCollection(scope.treeOptions.data,
function (newItems, oldItems) {
var addedItems = _.difference(newItems, oldItems);
var removedItems = _.difference(oldItems, newItems);
//but newItems and oldItems always the same
//...
}
);
}
};
}
};
} ]);
})(angular);
Я m, используя lodash (_), чтобы найти различия между новыми и старыми элементами. Проблема newItems и oldItems всегда одинаковы даже после того, как новые элементы будут перенесены в массив myItems родительской области. Что мне не хватает?
Вы пробовали перебирать себя и видеть, что на самом деле содержится в каждой переменной? –
Да, после push, newItems и oldItems содержат помещенные элементы. – synergetic
Может быть, функция называется много раз? –