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

app.factory('Photo', [
  '$resource', 
  function ($resource) {
    return $resource('photos.json', {}, {
      query: {
        method: 'GET', 
        isArray: true
      }
    });
  }
]);

app.controller('gridCtrl', [
  '$scope', 
  'Photo', 
  function ($scope, Photo) {
    $scope.test = 'Test Grid';
    $scope.photos = Photo.query();
    $scope.filters = {};
    $scope.filters.category = '*';
  }
]);

app.directive('cardTags', function () {
  return {
    restrict: 'AE',
    templateUrl: 'card-tags.html',
    scope: {
      tagValue: '='
    },
    link: function (scope) {
      scope.tags = scope.tagValue;
    }
  }
});
<!DOCTYPE html>
<html ng-app="app">

  <head>
    <meta charset="utf-8">
    <title>AngularJS - Grid with filter</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <script data-semver="1.3.13" src="//code.angularjs.org/1.3.13/angular.js" data-require="angular.js@1.3.x"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.13/angular-resource.min.js"></script>
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.12.0.js"></script>
    <script src="https://rawgit.com/Semantic-Org/Semantic-UI/next/dist/semantic.js"></script>
    <script src="app.js"></script>

    <link rel="stylesheet" href="https://rawgit.com/Semantic-Org/Semantic-UI/next/dist/semantic.css">
    <link href="style.css" rel="stylesheet">
  </head>

  <body ng-controller="gridCtrl">

    <h1>{{test}} (filter:{{filters.category}})</h1>

    <div class="four fluid ui buttons">
      <a class="tiny ui button" ng-model="filters.category" btn-radio="'*'">All</a>
      <a class="tiny ui button" ng-model="filters.category" btn-radio="'general'">General</a>
      <a class="tiny ui button" ng-model="filters.category" btn-radio="'sports'">Sports</a>
      <a class="tiny ui button" ng-model="filters.category" btn-radio="'nightlife'">Nightlife</a>
    </div>

    <div class="ui divider"></div>

    <div class="ui cards">
      <div class="card" ng-repeat="card in photos | filter:filters.category:strict">
        <div class="image">
          <img ng-src="{{card.src}}">
        </div>
        <div class="content">
          <a class="header">{{card.title}}</a>
          <div class="meta">
            <card-tags tag-value="card.category"></card-tags>
          </div>
        </div>
      </div>
    </div>
  </body>

</html>
body {
	background: #eee;
}
[
  {
    "id": "p1",
    "title": "One",
    "src": "http://lorempixel.com/150/150/",
    "info": "photo 1",
    "category": [
      "*",
      "General"
    ]
  },
  {
    "id": "p2",
    "title": "Two",
    "src": "http://lorempixel.com/150/150/sports", 
    "info": "photo 2",
    "category": [
      "*",
      "Sports"
    ]
  },
  {
    "id": "p3",
    "title": "Three",
    "src": "http://lorempixel.com/150/150/nightlife", 
    "info": "photo 3",
    "category": [
      "*",
      "Nightlife"
    ]
  },
  {
    "id": "p4",
    "title": "Four",
    "src": "http://lorempixel.com/150/150/",
    "info": "photo 1",
    "category": [
      "*",
      "General"
    ]
  },
  {
    "id": "p5",
    "title": "Five",
    "src": "http://lorempixel.com/150/150/sports", 
    "info": "photo 2",
    "category": [
      "*",
      "Sports"
    ]
  },
  {
    "id": "p6",
    "title": "Six",
    "src": "http://lorempixel.com/150/150/nightlife", 
    "info": "photo 3",
    "category": [
      "*",
      "Nightlife"
    ]
  }
]
<div class="ui divider"></div>
<div class="ui labels">
  <a class="ui small label" ng-repeat="tag in tags">
    {{tag}}
  </a>
</div>