我一直在玩Angular,我正试图让它与jQuery承诺更新列表。如果我创建数组restaurantItems数组,从一开始就填充了对象,那么它按预期工作,但是当我使用回调进行推送时,它似乎从未看到我添加的项目。我通过代码进行了调试,我知道所有的东西都是用我期望的值调用的,但是实际的视图永远不会被更新。我试过$ watch / $ watchCollection,但要么我做错了,要么我误解了。这是我现在的代码。
export class Controller {
public static $inject = [
'$scope',
'$location'
];
constructor(private $scope:IActiveOrderController, private $location:ng.ILocationService) {
$scope.restaurantItems = [];
var test = function(x)
{
debugger;
for (var i = 0; i < x.length; i++) {
$scope.restaurantItems.push(x[i]); // Verified this does actually push the correct object on the array.
}
};
ActiveOrderRepository.getActiveOrderItemsForActiveOrder(1).done(test);
}
}
答案 0 :(得分:1)
$ watchCollection对我很好。
你提到你正在使用jQuery的承诺 如果你在角度使用第三方库。 Angular可能不知道$ scope已更新。
你应该使用$ scope。$ apply。
例如
$.get(...).then(function(data){
$scope.$apply(function(){
$scope.data = data
})
})