0

我正在努力解决一个我认为可能与我正在工作的范围有关的问题。我使用 $http 请求来获取一些 json 数据。

var myApp = angular.module('myApp', []);
myApp.controller('PeopleController', function($scope, $http) {
var url = 'https://sweltering-fire-6061.firebaseio.com/people.json';
$http.get(url).success(function(data) {
    $scope.people = data;
});

数据在我的表中显示良好:

<table>
    <tr ng-repeat="person in people | filter:query | orderBy:orderBy">
        <td>{{person.name}}</td>
        <td>{{person.born}}</td>
    </tr>
</table>
<p>
   <select ng-model="orderBy">
      <option value="name">Name</option>
      <option value="born">Birth</option>
   </select>
</p>
<p>Search:<input ng-model="query"/></p>

但是,由于我声明使用 $http 请求检索数据,因此我的过滤器和 orderBy 不再起作用。这是因为我设置$scope.people = data在一个较低的范围内。如果是的话,有什么办法可以解决这个问题吗?

我已经在 Cloud9 IDE 和 Brackets 中对此进行了测试。谢谢你

4

1 回答 1

0

你返回的数据不正确,url的输出:

https://sweltering-fire-6061.firebaseio.com/people.json 是:

{"0":{"born":1791,"name":"Charles Babbage"},"1":{"born":1955,"name":"Tim Berners-Lee"}

这意味着: object.0 = {"born":1791,"name":"Charles Babbage"} 您可能想要返回一个数组,因为它现在尝试过滤“born”或“name”,而这些属性是在您的对象中更深一层!

于 2014-11-17T15:11:49.037 回答