I just want to make a directive of search page. I just create a directive 
in layout.js  and define all methods used in search. i just use tag 
<search></search> on my other pages to redirect directive and then on 
button click i just filter the data but data not filtered in other pages.

*My layout.js code:*

(function () {
    var controllerId = 'app.views.layout';
    angular.module('app').controller(controllerId, [
        '$scope', '$location', 'abp.services.vault.lightBox', 
'abp.services.vault.resource', '$window', 
'abp.services.vault.resourceDetail', 'abp.services.vault.category', 
'abp.services.vault.user',
        function ($scope, $location, lightBoxService, resourceService, 
$window, resourceDetailService, categoryService, userService) {
            var vm = this;
            vm.isAdmin = false;
            $scope.editResource = function (data) {
                var detail = data;
                localStorage.setItem("detail", JSON.stringify(detail));
                $window.location.href = "#/editResource";
                $window.location.reload();
            }


            $scope.imageDetail = function (data) {
                $scope.popUpInfo = [];
                $scope.popUpInfo.push(data);
            }

            $scope.resourceDetail = function (data) {

                var detail = data;
                sessionStorage.setItem("detail", JSON.stringify(detail));
                $window.location.href = "#/resourceDetail";
                window.location.reload();
            }

            $scope.addLightBox = function (data) {

                $scope.isAllow = "";
                vm.lightBoxInfo = { ResourceId: data.id, FileUrl: 
data.fileUrl }

                
lightBoxService.createLightBox(vm.lightBoxInfo).success(function (result) {
                    abp.notify.info("Resource Added To Your LightBox");

                });
            }

            userService.userIsAdmin().success(function (data) {
                vm.isAdmin = data;
            });

        }]).directive("search", [
    function () {
        return {
            //restrict: 'E',
            scope: {},
            template: '<div class="row"><div class="col-md-3">' +

        '</div>' +
        '<div class="col-md-9">' +
            '<form class="header-addre-form" name="categoryForm">' +
                '<div class="row">' +
                    '<div class="col-md-6">' +
                        '<input id="search" class="col-md-5" 
placeholder="Search" type="text" ng-model="searchInfo.categoryName">' +
                    '</div>' +
                    '<div class="col-md-1"></div>' +
                    '<div class="selectParent col-md-5">' +
                        '<div class="row">' +
                            '<select name="category" 
ng-model="searchInfo.CategoryId">' +
                                '<option ng-selected="true" value="">All 
Categories</option>' +
                                '<option ng-repeat="category in 
 categories" value="{{category.id}}">{{category.categoryName}}</option>' +
                            '</select>' +
                            '<button id="search_btn" class="fa fa-search" 
ng-click="search()"></button>' +
                        '</div>' +
                    '</div>' +
                '</div>' +
                '<div class="row">' +
                    '<div class="col-md-12">' +
                        '<div class="search_menu">' +
                            '<span class="search-menu">' +
                                '<label class="lighbox_menu"><a href="" 
id="btnBest" class="" ng-click="bestResource()">Best Match</a></label>' +
                                '<label class="lighbox_menu"><a href="" 
id="btnNew" ng-click="newResources()">New</a></label>' +
                                '<label class="lighbox_menu"><a href="" 
id="btnMost" ng-click="mostPopular()">Most Popular</a></label>' +
                                '<label class="lighbox_menu"><a href="" 
id="btnExpire" ng-click="expiredResources()">Expired</a></label>' +
                            '</span>' +
                            '<div class="search_align">' +

                            '</div>' +
                        '</div>' +
                    '</div>' +

                '</div>' +
            '</form>' +
        '</div></div>',
            replace: 'true',
            controller: ['$scope', '$http', '$window', 
'abp.services.vault.lightBox', 'abp.services.vault.resource',
              function ($scope, $http, $window, lightboxService, 
resourceService) {

                  $scope.error = false;
                  $scope.totalResult = false;

                  function simpleSearch(keywords, categoryId) {

                      $scope.MainCategoryFilter = [];
                      $scope.MainFilter = [];
                      $scope.CategoryFilter = [];
                      $scope.subCategoryFilter = [];
                      $scope.fileTypeFilter = [];
                      $scope.colourProfileFilter = [];
                      $scope.licenseTypeFilter = [];
                      $scope.CategoriesFilter = [];
                      $scope.MainFilter.push(categoryId);
                      $scope.mainCategory = { MainIds: $scope.MainFilter }
                      
categoryService.getFilterCatagory($scope.mainCategory).success(function 
(data) {
                          $scope.CategoriesFilter.push(categoryId); //Add 
Main CategoryId
                          angular.forEach(data.categories, function (value, 
key) {
                              
$scope.CategoriesFilter.push(data.categories[key].id); //Add Sub-CategoryId
                          });

                          $scope.filters = { CategoryIds: 
$scope.CategoriesFilter, FileTypeIds: $scope.fileTypeFilter, 
ColourProfileIds: $scope.colourProfileFilter, LicenseTypeIds: 
$scope.licenseTypeFilter, Keyword: keywords };

                          
resourceService.getFilterResource($scope.filters).success(function (data) {

                              if (data.resources == "") {
                                  $scope.error = true;
                                  $scope.totalResult = false;
                                  abp.notify.info("No Resources Available");
                                  $scope.Resources = data.resources;
                              }
                              else {
                                  //abp.notify.info("Found Resources");
                                  $scope.error = false;
                                  var currentPage = 1;
                                  $scope.Resources = data.resources;
                                  $scope.range = {
                                      lower: (currentPage - 1) * 24 + 1,
                                      upper: Math.min(currentPage * 24, 
data.resources.length),
                                      total: data.resources.length
                                  }
                                  $scope.totalResult = true;
                              }
                          })

                      });
                  }
                  $scope.getResource = function () {
                      $scope.totalResult = false;
                      $scope.loading = true;
                      
angular.element(document.querySelector("#btnExpire")).removeClass("best-search");
                      
angular.element(document.querySelector("#btnNew")).removeClass("best-search");
                      
angular.element(document.querySelector("#btnMost")).removeClass("best-search");
                      $scope.filterResources = 
JSON.parse(localStorage.getItem("filterSearchResult"));
                      if ($scope.filterResources != null) {

                          
angular.element(document.querySelector("#btnBest")).addClass("best-search");
                          $scope.searchInfo = { categoryName: 
$scope.filterResources.categoryName, CategoryId: 
$scope.filterResources.CategoryId }
                          simpleSearch($scope.filterResources.categoryName, 
$scope.filterResources.CategoryId);

                          localStorage.removeItem("filterSearchResult");

                          $scope.loading = false;
                      }
                      else {

                          var bestMatch = "";
                          
resourceService.getResources(bestMatch).success(function (data) {
                              $scope.Resources = data.resources;
                              var currentPage = 1;
                              $scope.Resources = data.resources;
                              $scope.range = {
                                  lower: (currentPage - 1) * 24 + 1,
                                  upper: Math.min(currentPage * 24, 
data.resources.length),
                                  total: data.resources.length
                              }
                              $scope.totalResult = true;
                              $scope.loading = false;
                          })
                      }
                  }
                  $scope.myMethod = function (currentPage, previousPage) {
                      $scope.range.lower = (currentPage - 1) * 24 + 1;
                      $scope.range.upper = Math.min(currentPage * 24, 
$scope.range.total);
                      $scope.range.total = $scope.range.total;
                  }
                  $scope.expiredResources = function () {
                      debugger;
                      $scope.totalResult = false;
                      $scope.loading = true;
                      
angular.element(document.querySelector("#btnExpire")).addClass("best-search");
                      
angular.element(document.querySelector("#btnNew")).removeClass("best-search");
                      
angular.element(document.querySelector("#btnMost")).removeClass("best-search");
                      
angular.element(document.querySelector("#btnBest")).removeClass("best-search");
                      
resourceService.getExpiredResources().success(function (data) {
                          debugger;
                          if (data.resources == "") {
                              $scope.error = true;
                              $scope.totalResult = false;
                              $scope.Resources = data.resources;
                              $scope.loading = false;
                          }
                          else {
                              $scope.error = false;
                              $scope.Resources = data.resources;
                              var currentPage = 1;
                              $scope.Resources = data.resources;
                              $scope.range = {
                                  lower: (currentPage - 1) * 24 + 1,
                                  upper: Math.min(currentPage * 24, 
data.resources.length),
                                  total: data.resources.length
                              }
                              $scope.totalResult = true;
                              $scope.loading = false;
                          }
                      });

                  }

                  $scope.bestResource = function () {
                      
angular.element(document.querySelector("#btnBest")).addClass("best-search");
                      $scope.getResource();
                  }
                  $scope.newResources = function () {
                      $scope.totalResult = false;
                      $scope.loading = true;
                      
angular.element(document.querySelector("#btnNew")).addClass("best-search");
                      
angular.element(document.querySelector("#btnMost")).removeClass("best-search");
                      
angular.element(document.querySelector("#btnBest")).removeClass("best-search");
                      
angular.element(document.querySelector("#btnExpire")).removeClass("best-search");
                      resourceService.getNewResources().success(function 
(data) {
                          $scope.error = false;
                          $scope.Resources = data.resources;
                          var currentPage = 1;
                          $scope.Resources = data.resources;
                          $scope.range = {
                              lower: (currentPage - 1) * 24 + 1,
                              upper: Math.min(currentPage * 24, 
data.resources.length),
                              total: data.resources.length
                          }
                          $scope.totalResult = true;
                          $scope.loading = false;
                      })

                  }

                  $scope.mostPopular = function () {
                      $scope.totalResult = false;
                      $scope.loading = true;
                      
angular.element(document.querySelector("#btnMost")).addClass("best-search");
                      
angular.element(document.querySelector("#btnBest")).removeClass("best-search");
                      
angular.element(document.querySelector("#btnExpire")).removeClass("best-search");
                      
angular.element(document.querySelector("#btnNew")).removeClass("best-search");
                      lightBoxService.getLightBoxes().success(function 
(data) {
                          if (data.lightBoxes == "") {
                              $scope.error = true;
                              $scope.totalResult = false;
                              $scope.Resources = data.lightBoxes;
                              $scope.loading = false;
                              abp.notify.info("No Most Popular Resource");
                          }
                          else {
                              $scope.error = false;
                              $scope.Resources = data.lightBoxes;
                              var currentPage = 1;
                              $scope.Resources = data.lightBoxes;
                              $scope.range = {
                                  lower: (currentPage - 1) * 24 + 1,
                                  upper: Math.min(currentPage * 24, 
data.lightBoxes.length),
                                  total: data.lightBoxes.length
                              }
                              $scope.totalResult = true;
                              $scope.loading = false;
                          }

                      })

                  };

                  $scope.search = function () {

                      simpleSearch(searchInfo.categoryName, 
searchInfo.CategoryId);
                  }
              }
            ]
        }
    }]);
})();

*Code to call directive on other pages:*

<search></search>


Now what is the way to filter the result on other pages.?

Please help !
Thanks in advance

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to