如何从API中获取JSON到我的Angular应用程序的视图中?

时间:2014-07-25 14:06:52

标签: javascript json angularjs

我有一个在

返回的JSON对象
localhost:9000/api/

我希望JSON数据能够填充

中的视图
localhost:9000/#/query

我有一条路线

.when('/query', {
  templateUrl: 'views/query.html',
  controller: 'QueryCtrl'
})

和控制器:

'use strict';

angular.module('myApp')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
    $scope.queries = Query.query();
  }]);

和视图:

<h1>Queries</h1>

<ul ng-repeat="query in queries">
  <li>{{query}}</li>
</ul>

似乎“查询”是空的,或者视图没有正确连接到控制器。

app.js也有这个工厂:

app.factory('Query', ['$resource', function($resource) {
  return $resource('/api', null, {
    'update': { method:'PUT' }
  }); 
}]);

JSON对象本身如下所示:

[{"tablename":"acc_logs"},{"tablename":"accounts"},{"tablename":"cat_logs"},{"tablename":"err_logs"},{"tablename":"exp_logs"},{"tablename":"pp_logs"},{"tablename":"sec_logs"},{"tablename":"stl_logs"},{"tablename":"tim_logs"},{"tablename":"tom_logs"},{"tablename":"usage_logs"}]

我可以在/api看到JSON字符串,但是当我转到/#/query时,它只是一个空列表。

我如何连接这些?我犯了什么错误?

编辑:感谢所有人的帮助。我忘了在index.html中添加我的控制器javascript。菜鸟错误,需要一个小时才能解决。

2 个答案:

答案 0 :(得分:1)

我发现您正在调用似乎不可用的Query对象,请尝试:

angular.module('myApp')
  .controller('QueryCtrl', ['$scope', 'Query', function ($scope, Group) {
    $scope.query = Group.query();

希望这有帮助。

答案 1 :(得分:1)

正如我在评论中指出的那样,您应该将$scope.query = Query.query();更改为$scope.queries = Query.query();,因为您使用ng-repeat而不是queries

然而,还有另一个错误。你必须改变

app.factory('Query', ['$resource', function($resource) {
  return $resource('/api', null, {
    'update': { method:'PUT' }
  }); 
}]);

app.factory('Query', ['$resource', function($resource) {
  return $resource('/api/query', null, {
    'update': { method:'PUT' }
  }); 
}]);

当您致电Query.query()时,您要向/api申请HTTP GET,而您想要/api/query