我在控制器中定义了一个对象列表,并在 vm.init()
之后对其进行排序,如下所示:
const myItems = [{},{},{}...{}]
vm.init().then(function() {
$scope.ajaxLoading = true; // Loader
$scope.itemsToRender = [];
// Pushing items from myItems in this list according to some conditions
$scope.itemsToRender.sort(function(a, b) {
return a.order - b.order;
})
}).finally(function() {
$scope.ajaxLoading = false;
});
这按预期工作正常,
但现在我从 myList
的 api 响应中得到 vm.init()
,当我来到这个页面时它没有对列表进行排序。但是如果我重新加载页面,它会对列表进行排序并完美呈现。
我试过调试,把console.log放在函数里,函数被调用了。
我做错了什么?排序完成前列表渲染了吗?我该如何解决这个问题?
答案 0 :(得分:0)
AngularJS 需要了解变化,以便消化和反映模板中的变化。您使用的 $ source .zshrc
N/A: version "N/A -> N/A" is not yet installed.
You need to run "nvm install N/A" to install it before using it.
方法是 Javascript,因此尽管将其直接应用于 $scope.itemsToRender 变量,Angular 仍然不知道其内容已更改,可能是因为它使用了数组长度等属性,因此如果长度不更改它不会识别这些更改。
无论如何,我很确定您可以改用 sort()
过滤器,它会为您处理所有这些问题,这是本案例的最佳做法
orderBy