在Angular.js中访问9gag API

时间:2014-08-03 23:28:31

标签: javascript ruby-on-rails angularjs

我正在制作一个简单的角度/轨道应用程序作为9gag查看器,仅用于练习。 I am using the unofficial api它似乎有效。我设置了rails app,而rails只是提供角度。我可以在一个javascript文件中调用api,并且它会吐出数据,所以我知道这部分可以工作。

当我进入控制台时,我看到了"成功"我输入的消息,所以唯一不起作用的代码是角度。这是我到目前为止所拥有的;

app.js

window.App = angular.module('chadder', ['ngResource'])

hot_ctrl.js

App.controller('HotCtrl',['$scope', '$http', function($scope,$http){
  $scope.data = [];
  $http.get('http://infinigag.eu01.aws.af.cm/trending/0').success(function(data){
     console.log("success");
      return $scope.data = data;
    });
}]);

index.html.erb

<div class="container" ng-controller="HotCtrl" id="test">
  <div class="row" ng-repeat="hot in hot">
      <h2>{{ data.caption }}</h2>
      <p>{{ data.link }}</p>
  </div>
</div>

我使用的是我用来访问其他rails api的服务,但由于我遇到的错误,我认为这只是让你访问本地的api(即localhost:3000 / api / something.json)。我没有使用它,但我确实有这个设置;

hot.js

App.factory('Chadder', [
  '$resource', function($resource) {
    return $resource('http://infinigag.eu01.aws.af.cm/trending/0', []);
  }
]);

因为我看到了&#34;成功&#34;,而且我可以在网页上看到API数据,我很确定我唯一做错的事情就是没有给出正确的角点。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

您没有正确阅读源数据对象

的形式返回
{
  data: [/* array of objects */],
  paging :{} /*object*/
}

此外,您的ng-repeat毫无意义。您没有要重复的范围数组hot。然后在ng-repeat内,您没有引用您创建的对象hot

使用您当前的范围设置,您需要重复data.data

<div class="row" ng-repeat="hot in data.data">
      <h5>{{ hot.caption }}</h5>
      <p>{{ hot.link }}</p>
</div>

DEMO