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

标签 javascript angularjs angularjs-ng-repeat ng-repeat

我有一个问题,当数组改变时 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/

相关文章:

javascript - AngularJs 按数据分组并使用过滤器显示

javascript - Angular Js 中的过滤器

javascript - Angular.js 更复杂的条件循环

asp.net - 在asp.net中调用javascript函数

javascript - Angularjs嵌套ng-repeat与过滤器中使用的表达式

javascript - Js 显示分区不起作用

json - 如果键存在,AngularJS 显示数据

javascript - angularjs ng-table/ng-repeat 行未加载

javascript - 将 JSON 对象附加到同一对象

javascript - 如何从使用 javascript 生成的工具提示中抓取文本