cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - Hasil data permintaan tak segerak AngularJS dihantar, deferred.promise tidak stabil

AngularJS Selepas meminta data secara tidak segerak, gunakan deferred.promise untuk menghantar nilai, tetapi ia sangat tidak stabil 10 kali dan hanya dipaparkan 2 kali.
Saya tidak tahu apa yang salah dengan kod saya atau jika ada cara yang lebih baik, sila beritahu saya!

Fail perkhidmatan: service.js
<pra>
app.factory('Factory',['$sce','$q','$http',function($sce,$q ,$http){

var _baseUrl="//api.a.com",deferred = $q.defer(),service={};
service.list=function(_params){
    query({item:"/a/index",params:_params}).success(function(data){
        if(data.code==0){
            deferred.resolve(data.data);
        }else{
            alert("Error");
        }
    });
    return deferred.promise;
}
var query=function(rq){
    var item=rq['item'],params=rq['params'];
    return $http({
        method:"POST",
        url:_baseUrl+item,
        params:params,
        headers:{'Content-Type': 'application/x-www-form-urlencoded'}
    }).error(function(data){
        $.notify({message:_ay.system.code.api.error[data.code]},{type:"danger"});
    });
};
return service;

}
</pre>
Fail pengawal: controller.js
<pra>
app.controller('ctrl.detail',['$scope','$ routeParams ','Factory',function($scope,$routeParams,Factory){

var _param=$routeParams,_id=_param.g,_token=token;
$scope.d_detail={};
$scope.detail=function(){
    Factory.list({token:_token,device_id:_id}).then(function(data){
        $scope.d_detail=data.row;
    });
};
(init = function(){
    $scope.detail();
})();

}]);
</pre>
Paparan halaman
<pra>
<p data-ng-controller="ctrl.detail">

<li data-ng-bind="d_detail.id"></li>
<li data-ng-bind="d_detail.name"></li>

</p>
</pra>

为情所困为情所困2792 hari yang lalu651

membalas semua(2)saya akan balas

  • 巴扎黑

    巴扎黑2017-05-15 16:56:40

    service.list = function (_params) {
        var deferred = $q.defer();
        query({ item: "/a/index", params: _params }).success(function (data) {
            if (data.code == 0) {
                deferred.resolve(data.data);
            } else {
                alert("Error");
            }
        });
        return deferred.promise;
    }

    balas
    0
  • 黄舟

    黄舟2017-05-15 16:56:40

    Factory.device_detail Saya tidak melihat definisi anda

    balas
    0
  • Batalbalas