Maison > Questions et réponses > le corps du texte
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>
巴扎黑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;
}