angularJS Search models

angularjs, search

Solution

You can use the filter named 'filter' (yes it's a little confusing): http://docs.angularjs.org/api/ng.filter:filter

Here's a demo: 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']);

If you need stations only as results, you should first flatten the JSON object hierarchy into a list of stations. ​

Problem

I'm new to angularJS. I have a requirement to perform a search on JSON data. Here is an example JSON structure ``` countries = [ { "country_name" : "India", "stations" : [ { "name": "Dream Factory" } ] }, { "country_name" : "Indonesia", "stations" : [ { "name": "Drummer Factory" }, { "name": "Beats" } ] } ] ``` Say I type `Ind`, I need the countries matching the string and return both `India` and `Indonesia` also In other field, typing `Factory` should retrieve station names which matches the string (here `Drummer Factory`, `Dream Factory`). What is the simple way to achieve this? Is there any built-in directive which solves this or can I use filters, If yes, please post with example...

Original source