2014-09-26 49 views
0

我正在使用簡單的Angularjs過濾器,您可以在輸入幫助下過濾列表中的項目。我把代碼在這裏http://plnkr.co/edit/6vDeOiGNGbblkCBOi8B7?p=preview過濾器不工作按預期,但如果我從控制器將數據移動到JSON,然後分析它像Angularjs過濾器無法使用json數據

function($scope, $http) { 
     $http.get('companies.json').success(function(data) { 
     $scope.companies = data; 
}; 
在NG-重複列表

JSON數據呈現,但過濾搜索不工作了。我如何使用json數據應用過濾器?

我還添加了json文件我想用於同一個plunker。

+0

有什麼不對您的過濾器?在我看來,它的工作就好了。 – Josep 2014-09-26 00:19:07

+0

你正在傳遞一個大對象而不是數組在companies.json – charlietfl 2014-09-26 00:35:35

回答

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; 
    }); 
    } 
]); 
0

你可以簡單地把它與angular.filter模塊的toArray過濾器轉向陣列。
用法:object | toArray: addKey[optional]

注:如果addKey設置爲true,過濾器還附加一個新的屬性$關鍵,這是在我們的迭代對象使用含有原始密鑰值引用該屬性。

例子:

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

謝謝,不知道這種可能性。我應該更仔細地深入過濾器。 – vitalym 2014-09-26 08:51:41