2016-07-14 5 views
0

Web APIに接続するためにdirPaginationプラグインでAngularjsを使用しています。これはうまくいくようです。私は、サーバー側の検索を行うには、検索機能を追加しました:関数で使用する検索クエリを覚えている

 $scope.searchChanged = function() { 

      if ($scope.searchFor.length == 0) { 
       $scope.calculatedValue = 'e'; 
      } else { 
       vm.getData(vm.pageno, vm.getSearch($scope.searchFor)); 
      } 
     } 

     vm.getSearch = function (query) { 

      if (query == undefined) { 
       query = 'tech'; 
      } else { 
       query = query; 
      } 
      return query; 
     } 

を参照Plnkrは完全なコード のために、私は(例えば、販売)APIが返す結果とページングが正しいことを検索を開始した場合、get要求は次のとおりです。

/api/students/?category=sales&begin=1&pageSize=10 

しかし、あなたは別のページ番号に行きたい場合は、サーバーへのget要求がある:

/api/students/?category=tech&begin=2&pageSize=10 

どのようにビューを覚えることができますページングと結果が正しいように 'sales'をクエリしますか?

答えて

1

あなたがここによくある間違いをしている:あなたはすでにスコープ変数を使用している場合は、ビューから変数に渡す必要はありません、それは次のようになります。

これに変更すると発生しやすい

 // change this to var getSearch or function getSearch if you don't need it on the view anymore 
     vm.getSearch = function() { 
      var query = vm.searchFor; 
      // you should only use vm, change ng-model to data.searchFor 

      if (query == undefined) { 
       query = 'tech'; 
      } 

      return query; 
     } 


     vm.getData = function() { 
      vm.users = []; 

      $http.get("/api/students/?category=" + vm.getSearch() + "&begin=" + vm.pageno + "&pageSize=" + vm.itemsPerPage).success(function (response) { 
       vm.users = response.data; 
       vm.total_count = response.total_count; 
      }); 
     }; 
0

あなたのリクエストIDは、適切な結果を得るためにSQLクエリを最適化する必要があります。

@begin INT = 0, 
@pageSize INT = 10 
SELECT * 
FROM [TableName] 
ORDER BY id 
OFFSET (@pageSize * @begin) 
ROWS FETCH NEXT @pageSize ROWS ONLY; 
+0

クエリは大丈夫ですはるかに少ないエラーになります。問題は$ scope.searchChanged関数にあります。 –

関連する問題