1

'de birçok çözümle ilgileniyorum Denetleyici bağımlılıklarının yarısının çözüldüğü bir soruna girdim ve hizmetlerim enjekte edildikten sonra 7-8 parametresiyle sonuçlandım.AngularJS

Çöz:

resolve{ 

    first_data:function(){}, 
    second_data: function(){}, 
    third_data: function(){} 


} 

Denetleyici:

function homeCtrl(first_data, second_data, third_data, ModalService, $state, $timeout, homeService, dataService){ 

}) 

tek parametre haline giderir tüm koymak için bir yol var mı?

+0

İlk - üçüncü_datayı tek bir nesnede kapsütabilmek mümkün mü? Her zaman aynı veriler mi? –

+1

Farklı sayfalar için farklı verilerin birleşimidir. Hepsini bir çözme işlevi altına almam ve $ q.all() yapmam gerektiğini mi söylüyorsun? –

cevap

0

$q nasıl?

let promises = [promiseAlpha(), promiseBeta(), promiseGamma()]; 

$q.all(promises).then(values => { 
    console.log(values[0]); // value alpha 
    console.log(values[1]); // value beta 
    console.log(values[2]); // value gamma 

    complete(); 
}); 

hatta:

let promises = { 
    alpha: promiseAlpha(), 
    beta: promiseBeta(), 
    gamma: promiseGamma() 
} 
$q.all(promises).then(values => { 
    console.log(values.alpha); // value alpha 
    console.log(values.beta); // value beta 
    console.log(values.gamma); // value gamma 

    complete(); 
}); 

Kredi: http://www.martin-brennan.com/using-q-all-to-resolve-multiple-promises/

soru nedir? first_data http araması mı? Eğer öyleyse, yukarıdaki çözümü kullanın. verilerle bazı kapsayıcıdır first_data, sadece service taşıyın ve örneğin istediğiniz yere bu hizmeti çağrı:

service.js

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .service('DashboardService', DashboardService); 

    DashboardService.$inject = ['$http']; 

    function DashboardService($http) { 

     var _this = this; 

     _this.first_data = function() { 
      return [{id: 1, content: "some data"}]; 
     }; 

     return _this; 
    } 

}()); 

controller.js

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('DashboardCtrl', DashboardCtrl); 

    DashboardCtrl.$inject = ['$scope', 'DashboardService']; 

    function DashboardCtrl($scope, DashboardService) { 

     var _this = this; 

     _this.first_data = DashboardService.first_data; 
    } 
}());