鑑於以下AngularJS控制器:
function PhoneListCtrl($scope, $http) {
$scope.phones = {};
$http.get('phones/phones.json').success(function(data) {
$scope.phones = data.splice(0, 5);
});
$scope.orderProp = 'age';
}
使用的代碼(從角官方教程),這已結合的phones
模型將被更新,以反映所接收到的JSON響應的模板。但是,如果您纏繞$範圍更新在setTimeout
聲明如下:
function PhoneListCtrl($scope, $http) {
$scope.phones = {};
$http.get('phones/phones.json').success(function(data) {
setTimeout(
function(){
$scope.phones = data.splice(0, 5);
},
5000
);
});
$scope.orderProp = 'age';
}
模板將不會更新,角碼似乎沒有拿起這種情況下,模型的變化。
我的問題很明顯:爲什麼它不能在第二種情況下工作?在$ http回調中,角色運行時如何通知模型更改?
這不起作用,因爲setTimeout不知道角度範圍的任何內容,因爲它是在角度範圍外執行的,如果你想讓你的代碼工作,你必須使用範圍$ apply以下由joakimbl回答 – 2013-04-29 11:42:56