2016-10-04 91 views
0

我使用$ scope.watch並設置並獲取將一個數據從一個控制器傳遞到另一個控制器。這工作得很好,但是當我用不同的html文件做這件事時,我的第一次點擊就不會傳輸數據。因爲瀏覽器被刷新。但是當我點擊chrome中的後退箭頭並設置一個值並單擊時,我可以在第二頁中獲取該值。我該如何解決這個問題。請告訴我解決方案。

var data = { 
    Quantity: '' 
}; 
return { 
    getQuantity: function() { 
     return data.Quantity; 
    }, 
    setQuantity: function(quantity) { 
     data.Quantity = quantity; 
    } 
}; 
.controller('DetailsCtrl', function($scope, $http, Data) { 
    $scope.quantity = ''; 
    $scope.$watch('quantity', function(newValue50, oldValue50) { 
     if (newValue50 !== oldValue50) 
      Data.setQuantity(newValue50); 
    }); 
}) 

.controller('FifthCtrl', function($scope, $http, Data) { 
    $scope.$watch(function() { 
     return Data.getQuantity(); 
    }, function(newValue50, oldValue50) { 
     if (newValue50 !== oldValue50) 
      $scope.quantity = newValue50; 
    }); 

}) 

回答

0

如果你想不同的會話之間的值存儲在瀏覽器中,你可以在數量值添加到local storage

下面是一個angularjs服務/工廠例如

app.factory('Data', function() { 

    var data = { 
     Quantity: '' 
    }; 

    return { 
     getQuantity: function() { 

      if (localStorage.getItem("data") === null) { 
       data.Quantity = 0; 
      } else { 
       var jsonData = localStorage.getItem('data'); 
       data.Quantity = JSON.parse(jsonData); 
      } 

      return data.Quantity; 
     }, 
     setQuantity: function (quantity) { 
      data.Quantity = quantity; 
      localStorage.setItem("data", JSON.stringify(data)); 
     } 
    }; 
}); 

注1:實際上,你並不需要的對象「數據」在這種情況下,你存儲在存儲的價值,但我讓它站在原樣。注意2:localStorage不能存儲諸如對象之類的完整類型,並且在存儲它們之前需要先製作字符串,這就是爲什麼使用JSON.stringify()。

+0

謝謝,它的工作。 – user3751835

相關問題