0
我有以下的angularJs代碼。當我的源數據發生變化時,我的ng-repeat不會更新我的視圖。我查看了其他帖子,並在我的ajax成功回調結束時添加了$scope.$apply();
,$scope.$digest();
,但它沒有幫助。這個想法是,頁面在開始時會有一個空表,在ajax調用onReady()之後,它會用數據填充行。可能有人點我什麼,我在這裏失蹤或更好的方法來達到同樣的ng-repeat無法反映源變量何時被修改
JS:
(function() {
var app = angular.module("jmeter-module", []);
app.controller('JmeterTableController', ['$scope', function($scope){
$scope.data = [];
$(document).ready(function(){
var url = "jmeterTableData.html";
fetchTableData(url, 10, 25);
});
function fetchTableData(url, minAge, maxAge){
$.ajax({
type: "GET",
url: url,
data: { minAge : minAge,
maxAge : maxAge },
datatype: "json",
success: function(data){
/*If I try to print data here, I see the values rightly getting returned*/
$scope.data = data;
},
error: function(e){
console.log(e);
}
});
}
}]);
})();
JSP:
<div id="buildGroupsParentDivId" ng-controller="JmeterTableController as row">
.
.
.
<tbody id="jmeter-table-content" >
<tr ng-repeat="val in row.data">
<td><img title="History" src="/images/history.png" width="20" height="20"></td>
<td><input type="checkbox" value="save"></td>
<td>{{val.firstName}}</td>
<td>{{val.lastResult}}</td>
</tr>
</tbody>
除非你有一個很好的理由通過ajax做一個簡單的http請求,這是正確的答案=) –
還有一件事,如果你真的需要調用文檔就緒的函數,你也可以切換到使用angular.element(document).ready()函數,但是提供的示例代碼不需要用這種方式進行包裝。只需定義您的應用和控制器,並讓Angular在知道文檔已準備就緒時採取行動。例如http://plnkr.co/edit/6a6TSR?p=preview – wesww