如下所示,如果$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"
} ];
}
PHP中文网2017-05-15 16:54:49
@lee1994522 さんから指摘を受けて、$.post メソッドを使用すると、 が angular のコンテキスト
から外れてしまうため、angular の $scope にバインドできないことに気付きました。 脱离了angular的上下文
,所以无法绑定到angular的$scope里。
this is the point,pls.. $.post is not an Angular issue and the stuff
it wraps is not in an Angular world,so it's obviously that the
equipments outside is in Angular's world and it works as you expecttry $scope.$apply() when you call a "none Angular" issue if you wanna
refresh sth
解决办法有两个:
第一个诚如@lee1994522所说,直接在$.post的回调函数的最后加上一句$scope.$apply()
<ブロック引用>
解決策は 2 つあります:
$.post
最初の方法は、@lee1994522 が言ったように、$.post コールバック関数の最後に
$scope.$apply()
という文を直接追加して、変更をビューに同期的にバインドします # 🎜🎜#
リーリー
#🎜🎜#$http.post#🎜🎜#
#🎜🎜#AngularJS - $http.post が JSON の代わりにリクエスト パラメーターを送信する方法#🎜🎜#
#🎜🎜# グローバル定義: #🎜🎜#
リーリー
#🎜🎜#次にコントローラーに次のように書きます: #🎜🎜#
リーリー给我你的怀抱2017-05-15 16:54:49
あなたの$.post
不是angular
的方法,所以实际上post的回调虽然执行了,但angular
在视图上却不知道这件事。你可以在$.post
里的赋值操作后面再跟一句$scope.$apply();
、その割り当て操作が有効になります。