服務可以以同樣的方式作爲控制器服務進行通信。 請參閱演示這裏
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
};
});
能否請您提供一個例子嗎? – 2014-10-03 12:23:54