0
下面我有一個代碼示例,它將根據ng-repeat的模型屬性成功分組數據,但僅限於初始頁面加載。因此,例如在負載上,我做了 $scope.filter_items.group_1 = 'propb';
,它正確地重複和按propb分組。如果我將其切換到propa
,也是如此。當ng-model輸入更新時ng-repeat不會更新
問題是,頁面加載後,通過輸入更改filter_items
模型對ng-repeat沒有任何影響,它不會更新。我試圖用。$ apply()方法工作一下,但沒有任何工作(從我讀的東西我不應該使用它)。如何在模型輸入更改後重新繪製ng-repeat?
注意:我使用memoize函數來避免Angular digest錯誤,如果沒有它,將會發生。
<!DOCTYPE html>
<html>
<head>
<script src="//code.angularjs.org/1.3.0/angular.js" data-semver="1.3.0" data-require="[email protected]*"></script>
<script data-require="[email protected]*" data-semver="1.6.0" src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
<script>
var app = angular.module("MyApp", []);
app.controller('MyCtrl', function($scope) {
$scope.filter_items = {};
$scope.filter_items.group_1 = 'propb';
$scope.items = [{id:"1", propa:"one", propb:"uno"},{id:"2", propa:"one", propb:"tres"}]
return
});
app.filter('myFilter', function() {
return _.memoize(function(items, filter_items) {
return _.groupBy(items, filter_items.group_1);
}
);
});
</script>
</head>
<body ng-app="MyApp">
<div ng-controller="MyCtrl">
Group by<br>
<select ng-model="filter_items.group_1">
<option value="propa">A</option>
<option value="propb">B</option>
</select>
<div ng-repeat="(group1, g_items) in items| myFilter:filter_items">
<h2>{{group1}}</h2>
</div>
</div>
</body>
</html>