cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - angular里$.post无法绑定到$scope里($.post、$http.post用法区别)

如下所示,如果$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" } ]; }
大家讲道理大家讲道理2744 hari yang lalu524

membalas semua(3)saya akan balas

  • PHP中文网

    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 harapkan

    cuba $scope.$apply() apabila anda memanggil isu "none Angular" jika anda mahu
    segarkan semula sth

    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

    $.post("xxx.action",
                {},
                function(response){
                    if(response.result == "success"){
                        ...
                        }
                        $scope.equipments = equipments; 
                        $scope.$apply();
                    }
                },
                "json"
        );
    

    $http.post

    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; 
        });
    

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:54:49

    Saya tidak faham penggunaan $.post oleh poster asal. Apa guna menyuntik $http

    balas
    0
  • 给我你的怀抱

    给我你的怀抱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.

    balas
    0
  • Batalbalas