我正在使用简单的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文件。
答案 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>