내가 짓고 있어요 사용자 정의 트리 지시어 : 자바 스크립트에서AngularJS와 1.2.6 : 시계 지침의 상위 범위를 수집
<ul tree="treeOptions">
<li>{{ item.code + ' - ' + item.name }}</li>
</ul>
: 지시어에서
$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);
새로운 아이템과 이전 아이템의 차이점을 찾기 위해 lodash (_)를 사용합니다. 새 항목을 상위 범위의 myItems 배열로 푸시 한 후에도 newItems 및 oldItems는 항상 동일합니다. 내가 뭘 놓치고 있니?
자신을 돌아보고 실제로 각 변수에 포함 된 내용을 보았습니까? –
예, 푸시 후 newItems 및 oldItems 모두 푸시 항목을 포함합니다. – synergetic
아마 함수가 여러 번 호출 되었습니까? –