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>