Javascript AngularJS-刷新ng重复
我使用ng repeat来显示一组值。我的过滤器选项会根据对服务器的ajax调用而变化。收到过滤器参数后,如何刷新ng repeat 模板Javascript AngularJS-刷新ng重复,javascript,angularjs,Javascript,Angularjs,我使用ng repeat来显示一组值。我的过滤器选项会根据对服务器的ajax调用而变化。收到过滤器参数后,如何刷新ng repeat 模板 <div> <div data-ng-controller="myCtrl"> <ul> <li data-ng-repeat="item in values | filter:filterIds()"> <code>#{{item.id}}<
<div>
<div data-ng-controller="myCtrl">
<ul>
<li data-ng-repeat="item in values | filter:filterIds()">
<code>#{{item.id}}</code> Item
</li>
</ul>
</div>
</div>
<button ng-click="loadNewFilter()"> filter now</button>
棱角的
var app = angular.module('m', []);
app.controller('myCtrl', function ($scope) {
$scope.values = [
{id: 1},
{id: 2},
{id: 3},
{id: 4},
{id: 5},
{id: 6}
];
$scope.filter = [1,2,3,4,5,6];
$scope.filterIds = function (ids) {
return function (item) {
var filter = $scope.filter;
return filter.indexOf(item.id) !== -1;
}
}
$scope.loadNewFilter = function (){
$scope.filter = [1,2,3];
}
});
您需要告诉angular,值发生了更改:
$scope.loadNewFilter = function (){
$scope.filter = [1,2,3];
$scope.$apply();
}
在收到名为$scope.$apply()的筛选器后,如下所示:刷新您的作用域
$scope.$apply(function() {
// your code
});
您已放置
现在过滤超出控制器范围。在我的情况下,我的ng repeat中有一个trackBy,必须将其删除以进行更新 我不需要使用$scope.apply()来查看更新。对我来说,解决这个错误的方法是确保:
正在从控制器内部调用更新
调用更新的控制器与包含ng repeat的控制器相同
@user1477955:按钮超出控制器的范围。它现在起作用了这解决了我遇到的一个问题,即通过回调向数组中添加项不会自动更新ng repeat。调用$source.$apply();在添加一个新项目后,它显示得很好。对我来说,完全是相同的问题!谢谢-我从来没有想到tracyBy会引起问题-我只知道它以前解决过问题@Meliodas您可以使用$index而不使用TrackByFuncy,我的下一个问题是如何在angularJS中调用单击事件。谢谢你:)+1