gpt4 book ai didi

javascript - AngularJS ng-repeat 在数组更新时不刷新

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:52 34 4
gpt4 key购买 nike

我有一个问题,当数组改变时 ng-repeat 没有更新列表。

我正在使用 JavaScript promise 计算一个计算,然后返回一个包含 2 个数组的对象。然后,这些数组将显示在以下代码片段的 View 中。

<button class="btn" data-toggle="modal" data-target="#tableModal" ng-click="vm.compareTables(vm.table)">Some text</button>
<!-- Modal -->
<div class="modal fade" id="tableModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">{{ vm.table.title}}</h4>
</div>
<div class="modal-body">
<h4>You got</h4>
<p ng-repeat="g in vm.got">{{ g }}</p>
<h4>You dont:</h4>
<p ng-repeat="d in vm.dont">{{ d }}</p>
</div>
</div>
</div>
</div>

在 Controller 中,我将一个函数包装在一个 promise 中,它返回带有 2 个填充数组的正确答案。我还可以在 Controller 中打印结果,ng-repeat 只是不更新​​ View 。

var vm = this;

vm.compareTables = function (table) {
getData().then(function succesCallback(response) {
vm.ing = response.data;
var r = table;
var promise = pro(r, vm.ing);
promise.then(function (data) {
console.log(data.got);
console.log(data);
vm.got = data.got;
vm.dont = data.dont;
});
});
}

上面的 promise 返回正确的结果。

如果有帮助,我正在使用 angular 1.6.1。 Controller 和 View 已连接到一个工作正常的组件。

更新

这是 promise 返回的控制台输出 Console output

最佳答案

将您的 vm.got = .. 包装在 $scope.$apply(function () { ... }) 中以强制执行 摘要循环。 Angular 可能不知道你的 promise 回调,因为你可能使用了不同于 angular 原生机制的 promise/callback 机制($http, $q , $resource).

关于javascript - AngularJS ng-repeat 在数组更新时不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41533127/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com