Search code examples
jqueryangularjsangularangularjs-scope

How to filter data by button value in AngularJS button click?


I am trying to search data with fix button value like when I click on veg button I want to only veg category data. right now my code is like. actually I am new learner for Angular js code.

First my button code:<butto id="veg" ng-click="myFilter = {type: 1}" title="veg">

My data display code:<div class="side-body padding-top fade in  tab-pane"  id="<?php echo $tt3->id; ?>">
                 <div class="row">
                 <div  ng-if='r.pro_category == <?php echo $tt3->id; ?>' ng-repeat = "r in groups | filter : searchGroups | filter:myFilter">
                    <div>
                        <div class="thumbnail">
                          <div><img src="../@{{r.image }}" alt="" /></div>
                          <div class="caption" style="padding-top:0px;">
                            <div>@{{r.pro_name }}</div>

                               <div>@{{r.price}}</div>

                    </div>
                    </div>
                    </div>

</div>
My script code: <script>
var GroupsApp = angular.module('GroupsApp',[]);
GroupsApp.controller('GroupsController', function ($scope, GroupsService) 
{

    getGroups();
    function getGroups() {
        GroupsService.getGroups()
            .success(function (grps) {
                $scope.groups = grps;

                 return (val.type != 2);

                console.log($scope.groups);
            })
            .error(function (error) {
                $scope.status = 'Unable to load Product data: ' + error.message;
                console.log($scope.status);
            });
    }
});

var url = window.location.pathname;
var productid = url.substring(url.lastIndexOf('/') + 1);
GroupsApp.factory('GroupsService', ['$http', function ($http) {


    var GroupsService = {};
    GroupsService.getGroups = function () {
        return $http.get('../showproduct/'+productid);
    };
    return GroupsService;
}]);

var url = window.location.pathname;
var productid = url.substring(url.lastIndexOf('/') + 1);
GroupsApp.factory('GroupsService', ['$http', function ($http) {


    var GroupsService = {};
    GroupsService.getGroups = function () {
        return $http.get('../showproduct/'+productid);
    };
    return GroupsService;
}]);
</script>

please help how to search data with button click.


Solution

  • Here is the example

    <div ng-app ng-controller="Test">
      <button ng-click="myFilter = {type: 1}">veg</button> | 
      <button ng-click="myFilter = {type: 2}">non veg</button> |
      <button ng-click="myFilter = null">None</button>
      <ul >
        <li ng-repeat="person in persons | filter:myFilter">{{person.name}}</li>
      </ul>
    </div>
    
    
    function Test($scope) {
      $scope.persons = [{type: 1, name: 'cheese'}, {type:2, name: 'chicken'}, {type:1, name: 'carrot'}, {type:2, name: 'beaf'}];
        $scope.myFunction = function(val) {
    
        return (val.type != 2);
        };
    }