【发布时间】:2017-01-08 13:17:28
【问题描述】:
我有一个问题,即当数组更改时 ng-repeat 没有更新列表。
我正在使用 JavaScript 承诺来计算一个计算,然后返回一个包含 2 个数组的对象。然后这些数组将显示在下面代码 sn-p 的视图中。
<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">×</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>
在控制器中,我将一个函数包装在一个 Promise 中,它会返回带有 2 个填充数组的正确答案。我也可以在控制器中打印结果,ng-repeat 只是不更新视图。
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;
});
});
}
上述承诺返回正确的结果。
如果有帮助,我正在使用 angular 1.6.1。控制器和视图连接到一个组件,它工作正常。
更新
【问题讨论】:
-
您有控制台数据吗?你在获取数据吗?
-
@AvneshShakya 是的,我添加了控制台输出的图像。无法向您显示数据,但存在数组大小。
-
pro函数是什么? -
比较两张表的功能。它工作正常。我发现问题可能出在两个组件之间的绑定中。
-
你为什么将“this”分配给你的 vm 变量,为什么它没有被声明为 $scope.vm = this?
标签: javascript angularjs angularjs-ng-repeat ng-repeat