我試圖在控制器中觀察視圖中的過濾器生成的集合時出現問題。
我過濾後的數據存儲在一個變量:
<table class="table">
<tr ng-repeat="item in filteredCollection = (myCollection | filter: txtSearch)">
<td ng-bind="item"></td>
</tr>
</table>
,我想訂閱我的控制器「filteredCollection」的變化:我已經設置了this JSFiddle顯示
$scope.$watchCollection('filteredCollection', function() {
if (typeof($scope.filteredCollection) != 'undefined')
console.log('Results changed : ' + $scope.filteredCollection.length);
});
你是我的問題:我的手錶功能從未被調用過。
有趣的事實,它可以在我的HTML中刪除所有<tabset> <tab>
標籤。我想我搞砸了$範圍,但我不明白爲什麼。也許這個tabset會創建一個新的$ scope子元素或者其他東西。
我希望你們會發現這是怎麼回事,
乾杯
謝謝您的回答,但你能解釋爲什麼我必須這樣做嗎?它是通過引用/值傳遞的變量的問題嗎? – bviale 2015-04-01 14:31:36
這是因爲ngRepeat創建一個子範圍,然後你的filteredCollection將是該範圍的一個屬性。如果你在父範圍上定義了一個obj,那麼每一個變化都將被寫入到該父範圍中。看到這個:https://github.com/angular/angular.js/wiki/Understanding-Scopes – eladcon 2015-04-01 14:36:37