如下所示,如果$scope.equipments=...那一段,放在$.post裡就不能綁定到$scope.equipments上,如果放在外面就可以,這是為什麼?
mainApp.controller('equipmentsController', function($scope, $http) {
$.post("getAllDeviceList.action",
{},
function(response){
$scope.equipments = [ {
"id" : "1",
"name" : "equipment01 ",
"number" : "11"
}, {
"id" : "2",
"name" : "equipment02 ",
"number" : "22"
}, {
"id" : "3",
"name" : "equipment03 ",
"number" : "33"
} ];
}
);
$scope.equipments = [ {
"id" : "1",
"name" : "equipment01 ",
"number" : "11"
}, {
"id" : "2",
"name" : "equipment02 ",
"number" : "22"
}, {
"id" : "3",
"name" : "equipment03 ",
"number" : "33"
} ];
}
經過@lee1994522 的提醒,意識到如果用了$.post方法,那麼
脱离了angular的上下文
,所以無法綁定到angular的$scope裡。解決方法有兩個:
$.post
第一個誠如@lee1994522所說,直接在$.post的回調函數的最後加上一句
$scope.$apply()
,把改變同步綁定到視圖上$http.post
AngularJS - Any way for $http.post to send request parameters instead of JSON
全域裡定義:
然後控制器裡面寫:
搞不懂樓主用$.post的意義。你注入$http又有何意義
你的
$.post
不是angular
的方法,所以实际上post的回调虽然执行了,但angular
在视图上却不知道这件事。你可以在$.post
里的赋值操作后面再跟一句$scope.$apply();
,那個賦值操作就生效了。