我想分享从两个控制器之间的lastFM API获得的数据。
我一直在尝试与工厂合作,但我没有掌握它......
angular.module('myApp')
.factory('getData', function($http, $scope, $routeParams) {
$http.get(lastfm + "&method=artist.getInfo&mbid=" + $routeParams.mbid).success(function(data) {
console.log(data)
});
})
.controller('artistCtrl', function ($scope, $routeParams, $http, getData) {
console.log(getData.data);
})
.controller('artistInfoCtrl', function ($scope, $routeParams, $http, getData) {
console.log(getData.data);
})
那我怎么设法解决这个问题?
答案 0 :(得分:1)
有几件事:
1)知道您正在处理异步数据,所以不要指望能够立即读取控制器中的数据。
2)让你的工厂返回一个控制器可以调用的功能。这个函数应该返回一个最终(如果一切顺利)用数据解析的承诺;
3)控制器可以调用工厂返回的这个函数,并且在返回的promise的.then()中,你可以实际使用数据。
我的建议是对我上面描述的术语进行一些研究,如果他们还不熟悉的话。了解它们将使您能够通过角度来实现更多目标。
答案 1 :(得分:0)
您的工厂没有房产数据,您可能需要致电您的工厂
var something = getData();
并使$ http调用的成功处理程序返回该数据
$http.get(lastfm + "&method=artist.getInfo&mbid=" + $routeParams.mbid).success(function(data) {
return data;
});