2016-08-17 2 views
0

각도 및 노드에 자체 카트 시스템을 구축하려고합니다. 내 컨트롤러는 몽고 데이터베이스의 사용자 카트와 로컬 저장소의 카트를 모두 처리합니다 (사용자가 계정이없는 경우). 지금은 장바구니 컨트롤러가 로컬 저장소와 데이터베이스에서 장바구니 항목을 제거 할 수있는 방법을 만들었습니다. 내 각도보기 개체를 감시합니다.각 범위 변수의 변경 사항을 보는 방법

$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를 사용하지 않는 당신을 운영자 추천. LocalStorage을 사용할 때 다시 모든 브라우저 탭에서 페이지를 새로 고칠 필요가 없기 때문에 귀하의 경우에는 watcher을 사용할 필요가 없습니다. 실제로 카트 항목은 $ scope 대신 $localStorage.lineItems을 보게됩니다. lineItems 및 $ localStorage.lineItems가 업데이트 되었기 때문에 모든 브라우저 탭이 자동으로 업데이트됩니다. 그리고 하나의 탭에서 클릭 이벤트를 기반으로 요청 및 서버 측 처리를 시작하는 트리거가 생기고 응답하면 localStorage 변수 ($localStorage.lineItems)가 업데이트되므로 콘텐츠가 항상 업데이트됩니다.

관련 문제