Angularjs过滤器不使用json数据

时间:2014-09-26 00:04:55

标签: json angularjs

我正在使用简单的Angularjs过滤器,您可以在输入的帮助下过滤列表中的项目。我把代码放在这里http://plnkr.co/edit/6vDeOiGNGbblkCBOi8B7?p=preview过滤器按预期工作,但是如果我将数据从控制器移动到json然后再解析它

function($scope, $http) {
        $http.get('companies.json').success(function(data) {
         $scope.companies = data;
};

Json数据在ng-repeat列表中呈现,但过滤搜索不再起作用。如何使用json数据应用过滤器?

我还在同一个plunker中添加了我想要使用的json文件。

2 个答案:

答案 0 :(得分:2)

您的json文件是一个对象而不是一个数组。所以你最好把它改成一个数组,或者

myApp.controller('CompaniesController', ['$http', '$scope', 
  function($http,$scope) {
    $http.get('companies.json').success(function(data) {
        var companies = [];
        // make the object to an array
        for(var companyName in data) {
          companies.push(data[companyName]);
        }
         $scope.companies = companies;
    });
  }
]); 

答案 1 :(得分:0)

您可以使用toArray模块的angular.filter过滤器将其转换为数组 用法: object | toArray: addKey[optional]

注意: 如果addKey设置为true,则过滤器还会将新属性$ key附加到包含我们所在对象中使用的原始键的值迭代引用属性。

示例:

  <input ng-model="model" type="text"/>
  <ul>
    <li ng-repeat="comp in companies | toArray | filter:model">
      {{ comp }}
    </li>
  </ul>