recherche

Maison  >  Questions et réponses  >  le corps du texte

angulaire.js - Le résultat des données de requête asynchrone AngularJS est livré, deferred.promise est instable

AngularJS Après avoir demandé des données de manière asynchrone, utilisez deferred.promise pour transmettre la valeur, mais elle est très instable. Elle est rafraîchie 10 fois et affichée seulement 2 fois.
Je ne sais pas ce qui ne va pas avec mon code, ou s'il existe un meilleur moyen, éclairez-moi s'il vous plaît !

Fichier de service : service.js
<pre>
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>
Fichier du contrôleur : controller.js
<pre>
app.controller('ctrl.detail',['$scope','$ routeParams ','Usine',fonction($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>
Affichage de la page
<pre>
<p data-ng-controller="ctrl.detail">

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

</p>
</pre>

为情所困为情所困2825 Il y a quelques jours671

répondre à tous(2)je répondrai

  • 巴扎黑

    巴扎黑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;
    }

    répondre
    0
  • 黄舟

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

    Factory.device_detail Je n'ai pas vu votre définition

    répondre
    0
  • Annulerrépondre