我建立自定義樹指令: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);
我使用lodash(_)來找出新舊項目之間的差異。 問題是newItems和oldItems總是相同的,即使將新項目推送到父作用域的myItems數組後。我錯過了什麼?
您是否試過循環瀏覽自己,看看每個變量中實際包含的內容? –
是的,推後,newItems和oldItems都包含推送的項目。 – synergetic
也許功能被稱爲無數次? –