angular:为什么 ng-repeat 不更新来自 ajax 调用的数据?

angular: Why won't ng-repeat update with data from ajax call?

从控制器执行 ajax 调用。可以从两个不同的 link 触发调用,它们都在同一个 html 模板中。当使用上面的 link 切换到选项卡时, ajax 调用返回的数据会正确显示。使用 refresh link 时,ng-repeat 中的元素不会更新。有人知道这是为什么吗?

angularjs:

app.controller("ActiveSimulations",
    ["$scope", "$http", "socket",
    function($scope, $http, socket){

        $scope.active_simulations_dict = {};
        $scope.get_active_simulations = function() {
            var responsePromise = $http.get("/active_simulations");
            responsePromise.success(function (data, status, headers, config) {
                $scope.active_simulations_dict = data;

                console.log($scope.active_simulations_dict)
            });
            responsePromise.error(function (data, status, headers, config) {
                console.log('Warning - "AJAX failed!"')
                alert("AJAX failed!");
            });
        };
}]);

HTML

<div id="followSim" class="tab-pane fade">
  <h3>Follow running simulations</h3>
  <div class="inline-containers">
    <div id="simulation-list-wrapper">
      <ul class="list-unstyled">
        <li ng-repeat="(key, value) in active_simulations_dict">
          <a ng-show="value[0] && value[2]" ng-click="followActiveSimulation(key)">
            {[{ value[0] }]} ( {[{ value[2] }]} is director)
          </a>
        </li>
      </ul>
    </div> <!--end simulation list wrapper-->

    <div id="refresh-simulation-list" ng-controller="ActiveSimulations">
        <a id="refresh-link"
           class="right-side"
            ng-click="get_active_simulations()">
          <i class="icon-refresh right-side"></i>
          refresh list
        </a>
    </div>

正如@kasoban 指出的那样,您可能遇到多个实例的问题。最佳做法是创建一个 service 来处理您的请求。您可以注入它并从任何控制器调用请求函数,例如:

$scope.active_simulations_dict = RequestService.get_active_simulations();