As shown below, if the $scope.equipments=... section is placed in $.post, it cannot be bound to $scope.equipments. If it is placed outside, it can be bound. Why is this?
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"
} ];
}
After being reminded by @lee1994522, I realized that if the $.post method is used, then
脱离了angular的上下文
it cannot be bound to Angular’s $scope.There are two solutions:
$.post
The first one is as @lee1994522 said, directly add a sentence
$scope.$apply()
at the end of the $.post callback function to synchronously bind the changes to the view$http.post
AngularJS - Any way for $http.post to send request parameters instead of JSON
Global definition:
Then write in the controller:
I don’t understand the original poster’s use of $.post. What’s the point of injecting $http
Your
$.post
不是angular
的方法,所以实际上post的回调虽然执行了,但angular
在视图上却不知道这件事。你可以在$.post
里的赋值操作后面再跟一句$scope.$apply();
, that assignment operation will take effect.