1

在我的角度控制器中,我定义了以下方法

$scope.searchListing = function() {
    $http({
        url: App.Url.to('listing/feed/21312')
    }).success(function(data, status, headers, config) {
        $scope.data = data;
    });
}

看来,$scope.data.listing 是循环的

<div class="item" ng-repeat="property in data.listings"><!-- stuff --></div>

searchListing 是使用 ng-click 触发的,并且一切正常。但是我有一个单独的 API 来处理对我的应用程序的 API 调用,它基于 jQuery。集成我的基于 jQuery 的 API 之后

$scope.searchListing = function() {
    App.Listing.getListing().done(function(data){
        $scope.data = data;
    });
}

API 返回 jqXHR 对象,因此我可以对它们调用 promise 方法。问题是即使数据被分配给 $scope.data 我的视图没有得到更新。ajax 请求完成后,我访问控制器以检查是否分配了数据

angular.element('[ng-controller=listingController]').scope().data

它确实显示了数据,为什么视图没有更新?

4

1 回答 1

2

当 Angular 模型$scope

但是,当这种数据更改发生在 Angular 视口之外的回调中时,Angular 无法监视更改。这发生在您的数据更改发生在 jQuery 承诺中的情况下,这不是 Angular 的一部分。在这种情况下,您需要像这样手动触发摘要循环:

App.Listing.getListing().done(function(data){
        $scope.data = data;

        // make sure your app is not currently in a digest loop
        if (!$scope.$$phase)
            $scope.$apply(); // trigger digest loop
});
于 2013-04-12T20:55:43.257 回答