2016-12-02 9 views
0

Angularjsを使用して検索ページを構築しています。すべてうまくいきますが、私の懸念は、ユーザーが検索ページが既に読み込まれた後にデータベースに新しいエントリを追加するとどうなりますか?新しいエントリはフィルタに表示されません。これを達成する方法は?以下は私のコードです。どんな助けもありがとうございます。Angularjs - データベースからの新しいデータを含むリロードスコープ

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

app.filter('startFrom', function() { 
    return function(input, start) { 
     if(input) { 
      start = +start; //parse to int 
      return input.slice(start); 
     } 
     return []; 
    } 
}); 
app.controller('searchCrtl', function ($scope, $http, $timeout) { 
    $scope.showLoader = true; 
    $http.get('PostsController.do?cmd=postDetails').success(function(data){ 
     $scope.showLoader = false; 

     $scope.list = data; 
     $scope.currentPage = 1; //current page 
     $scope.entryLimit = 10000; //max no of items to display in a page 
     $scope.filteredItems = $scope.list.length; //Initially for no filter 
     $scope.totalItems = $scope.list.length; 
    }); 
    $scope.setPage = function(pageNo) { 
     $scope.currentPage = pageNo; 
    }; 
    $scope.filter = function() { 
     $timeout(function() { 
      console.log($scope.list); 
      $scope.filteredItems = $scope.filtered.length; 
     }, 10); 
    }; 
    $scope.sort_by = function(predicate) { 
     $scope.predicate = predicate; 
     $scope.reverse = !$scope.reverse; 
    }; 
}); 

フィルタリング項目のデータベースから新しいデータでスコープを読み込む方法はありますか?

+0

データベースの新しいデータ?データベースが更新されたときに通知を受けるにはwebsocketが必要な場合があります – Zen

+0

使い方は?あなたは私にいくつかのリンクを与える/ – Keerthi

+0

WebSocketはHttpとは異なり、バックエンドサーバとクライアントブラウザが新しい接続を作成せずに望みどおりに通信できるようにします。 [MDN](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API)には最高のドキュメントがあります。あなたはそれがリアルタイムである必要がない限り、それは多くのリソースを消費するので、あなたはそれを必要としないかもしれません。 – Zen

答えて

0

tmpの回避策は、10秒ごとにサーバーに照会することです。あなたはまだwebsocketが何であるか、それが何のために使われているのか、バックエンドとフロントエンドでどのように使用できるのかを学ぶ必要があります。

app.controller('searchCrtl', function ($scope, $http, $timeout) { 
    $scope.showLoader = true; 

    // <-- 
    $scope.currentPage = 1; 
    $scope.entryLimit = 10000; 
    setInterval(function() { 
     $http.get('PostsController.do?cmd=postDetails').success(function(data){ 
      $scope.showLoader = false; 
      $scope.list = data; 
      $scope.filteredItems = $scope.list.length; //Initially for no filter 
      $scope.totalItems = $scope.list.length; 
     }); 
    }, 10000); // update data every 10 sec 
    // --> 


    $scope.setPage = function(pageNo) { 
     $scope.currentPage = pageNo; 
    }; 
    $scope.filter = function() { 
     $timeout(function() { 
      console.log($scope.list); 
      $scope.filteredItems = $scope.filtered.length; 
     }, 10); 
    }; 
    $scope.sort_by = function(predicate) { 
     $scope.predicate = predicate; 
     $scope.reverse = !$scope.reverse; 
    }; 
}); 
関連する問題