Angularjs - 在两个控制器之间传递API数据

时间:2014-03-25 20:15:19

标签: javascript angularjs model-view-controller controller last.fm

我想分享从两个控制器之间的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);
  })

那我怎么设法解决这个问题?

2 个答案:

答案 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;
    });