0
從控制器執行ajax調用。這個調用可以從兩個不同的鏈接觸發,這兩個鏈接都在同一個html模板中。當使用上述鏈接切換到選項卡時,由ajax調用返回的數據將正確顯示。當使用refresh
鏈接時,ng-repeat中的元素將不會更新。任何人都知道這是爲什麼?angular:爲什麼不會用ajax調用的數據重複更新?
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>
第一個想法:它是一個單獨的控制器,您很可能會打破範圍。所以你重複使用的active_simulations_dict是一個與你在ActiveSimulations控制器中訪問的變量不同的變量。 – kasoban 2015-02-12 09:21:24