通过路由交换ng-view。这是一些路由和控制器代码
var containers = [];
angular.module('AContainer',['ngRoute']).config(
function ($routeProvider){
$routeProvider
.when('/', {
controller: containerListCtrl,
templateUrl: '/closeAndUplift_containerList.html'
});
}
);
function containerListCtrl($scope, $location){
$scope.containers = containers;
}
这是div
<div id='containersDiv' ng-app='AContainer'>
<div ng-view></div>
</div>
在此视图中(closeAndUplift_containerList.html)已加载,通过ng-repeat显示对象数组
<div>
<table>
<thead>
<th>Pallet id</th>
</thead>
<tr ng-repeat='container in containers'>
<td><a href='#/edit/{{container.index}}'>{{container.id}}</a></td>
</tr>
</table>
当jquery ajax回调导致更改时,会出现问题。 xhr调用包含在一个单独的库中,并传入一个回调函数。回调应该清除容器列表。回调执行:
var activeScope = $('#containersDiv').scope();
activeScope.$apply( function(){
activeScope.containers = [];
});
但没有任何反应。旧值仍在显示。
编辑: 根据Rishul的建议,我重新安排了代码以利用$ http来使其工作。问题在于,虽然它是一种解决方法,但它并没有真正回答为什么我使用的方法不起作用的问题。 有人可以评论是否应该选择他的答案来解决问题吗?
答案 0 :(得分:1)
使用 $ http 服务进行ajax调用,因为这个内置的角度js库将在获取响应时运行摘要周期,当你修改范围变量时,视图也会发生变化。
在你的情况下,jquery回调不会触发$ digest循环因此视图没有得到更新!请确认是否有效