Seperti yang ditunjukkan di bawah, jika bahagian $scope.equipments=... diletakkan dalam $.post, ia tidak boleh terikat dengan $scope.equipments Jika ia diletakkan di luar, ia boleh diikat.
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"
} ];
}
Setelah diingatkan oleh @lee1994522, saya menyedari bahawa jika kaedah $.post digunakan, maka
脱离了angular的上下文
ia tidak boleh terikat pada $scope sudut.Terdapat dua penyelesaian:
$.siaran
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$http.post
AngularJS - Sebarang cara untuk $http.post menghantar parameter permintaan dan bukannya JSON
Ditakrifkan secara global:
Kemudian tulis dalam pengawal:
Saya tidak faham penggunaan $.post oleh poster asal. Apa guna menyuntik $http
$.post
anda bukan kaedahangular
, 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.