Rumah > Soal Jawab > teks badan
如下所示,如果$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
Setelah diingatkan oleh @lee1994522, saya menyedari bahawa jika kaedah $.post digunakan, maka 脱离了angular的上下文
ia tidak boleh terikat pada $scope sudut.
ini maksudnya, pls.. $.post bukan isu Sudut dan sebagainya
ia tidak berada dalam dunia Sudut, jadi jelas bahawa
peralatan di luar berada dalam dunia Angular dan ia berfungsi seperti yang anda harapkancuba $scope.$apply() apabila anda memanggil isu "none Angular" jika anda mahu
segarkan semula sth
Terdapat dua penyelesaian:
Yang pertama adalah seperti yang dikatakan @lee1994522, terus tambah ayat $scope.$apply()
di hujung fungsi panggil balik $.post untuk mengikat perubahan pada paparan secara serentak
$.post("xxx.action",
{},
function(response){
if(response.result == "success"){
...
}
$scope.equipments = equipments;
$scope.$apply();
}
},
"json"
);
AngularJS - Sebarang cara untuk $http.post menghantar parameter permintaan dan bukannya JSON
Ditakrifkan secara global:
var app = angular.module('myApp');
app.config(function ($httpProvider) {
$httpProvider.defaults.transformRequest = function(data){
if (data === undefined) {
return data;
}
return $.param(data);
}
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
});
Kemudian tulis dalam pengawal:
$http.post("xxx.action").success(function(response) {
...
$scope.equipments = equipments;
});
曾经蜡笔没有小新2017-05-15 16:54:49
Saya tidak faham penggunaan $.post oleh poster asal. Apa guna menyuntik $http
给我你的怀抱2017-05-15 16:54:49
$.post
anda bukan kaedah angular
, jadi walaupun panggilan balik siaran sebenarnya dilaksanakan, angular
tidak mengetahuinya pada paparan. Anda boleh mengikuti operasi tugasan dalam $.post
dengan ayat lain $scope.$apply();
, dan operasi tugasan akan berkuat kuasa.