2016-08-17 17 views
0

私は独自のカートシステムを角度とノードで構築しようとしています。私のコントローラーは、mongoデータベースのユーザーカートとローカルストレージのカート(ユーザーがアカウントを持っていない場合)の両方を処理します。今、カートのコントローラがローカルストレージとデータベースの両方からカートアイテムを削除する方法を作成しました。私のアングルビューはオブジェクトを見ます。角度範囲変数の変更を監視する方法

$scope.lineItems 

カートに商品を入れるため。今すぐカートを更新することができますが、ページを更新する必要があります。スコープを更新する関数をトリガしてスコープを更新するにはどうすればよいでしょうか?

コード:

if (token) { 
    var payload = authService.parseToken(token); 
    dataService.getCart(payload._id).then(function (resolve){ 
     if (resolve.data){ 
     $scope.lineItems = resolve.data; 

     $scope.deleteLineItem = function(lineitem){ 
      dataService.deleteLineItem([lineitem.lineItemID, payload._id]); 
     } 
     } 
    }, function(reason){ 
     console.log(reason); 
    }); 
} else { 
    if (dataService.retrieveLocal('localCart')){ 
     $scope.lineItems = dataService.retrieveLocal('localCart'); 

     $scope.deleteLineItem = function(lineitem){ 
      var cart = dataService.retrieveLocal('localCart'); 
      var updatedCart = cart.filter(function(item){ 
       if (lineitem.lineItemID != item.lineItemID){ 
        return item 
       } 
      }) 
      dataService.storeToLocal('localCart', updatedCart); 
     } 
    } 
} 

答えて

0

私は非常にあなたのウォッチャー(タイマー)を最小化しようとする一般のアプリで、重い負荷コストにAngularJS Watcherを使用しないrecommand。 LocalStorageを使用している場合は、ブラウザのすべてのタブでページを再度更新する必要がないため、watcherを使用する必要はありません。実際にカートの商品は$ scopeの代わりに$localStorage.lineItemsを見るだけです。 lineItemsと$ localStorage.lineItemsが更新されて以来、すべてのブラウザタブが自動的に更新されます。 そして、1つのタブで、クリックイベントに基づいて要求とサーバー側の処理を開始するトリガーがあります。次に、localStorage変数($localStorage.lineItems)を更新すると、コンテンツは常に更新されます。

関連する問題