4

我是 angularJS 的新手。我需要对 JSON 数据执行搜索。这是一个示例 JSON 结构

countries =   [
{
    "country_name" : "India",
    "stations" : [
        {
            "name": "Dream Factory"
        }
    ]
},

{
    "country_name" : "Indonesia",
    "stations" : [
        {
            "name": "Drummer Factory"
        },  
        {
            "name": "Beats"
        }
    ]
}
]

假设我键入Ind,我需要匹配字符串的国家/地区并返回两者IndiaIndonesia 并且在其他字段中,键入Factory应该检索与字符串匹配的站名(此处Drummer Factory为 , Dream Factory)。

实现这一目标的简单方法是什么?是否有任何内置指令可以解决这个问题或者我可以使用过滤器,如果是,请发布示例...

4

1 回答 1

3

您可以使用名为“filter”的过滤器(是的,这有点令人困惑):http ://docs.angularjs.org/api/ng.filter:filter

这是一个演示:http: //jsfiddle.net/g/pXnRs/4/

HTML:

<div ng-controller="CountryController">
    Filter: <input ng-model="nameFilter" />
    <ul>
        <li ng-repeat="country in countries | filter: nameFilter">
            {{country | json}}
        </li>
    </ul>      
</div>​

JS:

var app = angular.module('app', []);

app.controller('CountryController', function($scope){
    $scope.nameFilter = '';
    $scope.countries = [
    {
        "country_name" : "India",
        "stations" : [
            {
                "name": "Dream Factory"
            }
        ]
    },   
    {
        "country_name" : "Indonesia",
        "stations" : [
            {
                "name": "Drummer Factory"
            },  
            {
                "name": "Beats"
            }
        ]
    }];
});

angular.bootstrap(document, ['app']);

如果您只需要站点作为结果,则应首先将 JSON 对象层次结构展平为站点列表。​</p>

于 2012-10-30T13:17:01.667 回答