2014-10-03 78 views
0

我有2個服務,我想發送一個變量給一個並獲得返回。我該怎麼做呢?在AngularJs中將變量從一個服務發送到另一個服務

這裏是我的代碼

var services = angular.module('service', []); 

services.factory('startApp',['$http','kickTheTires', 
    function($http,kickTheTires){ 
    kickTheTires('this is my var'); 
}]); 
services.factory('kickTheTires',[function(val){ 
    console.log(val) 
}]); 

預先感謝您!

+0

能否請您提供一個例子嗎? – 2014-10-03 12:23:54

回答

0

希望這有助於

services.factory('startApp',['$http', function($http){ 
    return { 
     getMyVariable : function() { 
      return $http.get('myservice/abc'); 
     } 
    }; 
}]); 

services.factory('kickTheTires',['$http', function($http){ 
    return { 
     getTheTires : function(myvar) { 
      return $http.get('myservice/xyz?' + myvar); 
     } 
    } 
}]); 

startApp.getMyVariable().then(function(result) { 
    return kickTheTires.getTheTires(result); 
}) 
.then(function(result) { 
    console.log(result); 
}); 
0

服務可以以同樣的方式作爲控制器服務進行通信。 請參閱演示這裏

http://jsbin.com/kudoli/1/edit?console,output

var app = angular.module('app',[]); 

app.controller('fCtrl', function($scope,queryService){ 

    queryService.setquery("my day"); 
    queryService.getData(); 

}); 
app.factory('queryService', function(dataService){ 

    function setquery(q){ 

    dataService.query.q = q; 

    } 

    function getData(){ 

    dataService.getData().then(function(){ 
     console.log("--------------"); 
     console.log("service a"); 
     console.log(dataService.data.info); 

    }); 

    } 

    return { 

    setquery : setquery, 
    getData:getData 

    }; 


}); 
app.factory('dataService', function($http, $q, filterFilter) { 

    var API = "https://ws.spotify.com/search/1/track.json"; 
    var query = { 
    q: "", 
    page: 0 

    }; 
var data ={ 
    tracks: [], info : {} 
}; 

    var getData = function() { 
    var deferred = $q.defer(); 
    console.log("--------------"); 
    console.log("service b"); 
    console.log("Call api"); 
    console.log(query); 

    $http({ 
     method: 'get', 
     url: API, 
     params: query 
    }).then(onSucess, onError); 


    function onSucess(response) { 

     angular.copy(response.data.tracks, data.tracks); 
     angular.copy(response.data.info, data.info); 
     deferred.resolve(); 
    } 

    function onError() { 

     alert("Can't get data"); 
     deferred.reject(); 

    } 

    return deferred.promise; 
    }; 

    return { 

    data: data, 
    query: query, 
    getData:getData 

    }; 

});