Tôi đã tạo một dịch vụ bằng cách sử dụng CacheFactory. Tôi đã hy vọng nó sẽ là một singleton. Tôi tiêm nó vào bộ điều khiển của tôi và nó hoạt động tốt trong phạm vi của bộ điều khiển. Nhưng một khi tôi đi đến một trang khác với phạm vi khác, tôi dường như không có các giá trị trong bộ nhớ cache mà tôi đã lưu trữ trong cùng một bộ điều khiển trong một phạm vi khác. Không nên hành vi của CacheFactory là một singleton, nơi tôi có những đối tượng cùng một bộ nhớ đệm ở khắp mọi nơi tôi tiêm CacheService?CacheFactory có nằm trong angularjs một singleton không?
Đây là dịch vụ của tôi là một ví dụ:
angular.module('MyService', []).factory('CacheService', function($cacheFactory) {
return $cacheFactory('cacheService', {
capacity: 3 // optional - turns the cache into LRU cache
})
});
Sau đó, trong bộ điều khiển của tôi:
function MyController($scope, CacheService) {
var results= CacheService.get('storedvalue');
if(!results){
CacheService.put('storedvalue', results);
alert('results not stored');
}
else
alert('results stored');
}
Cảm ơn Josh. Ví dụ của bạn hoạt động. Và bây giờ tôi nhìn kỹ hơn tôi. Nơi nó không hoạt động là nếu tôi làm mới trình duyệt. Mà bây giờ tôi nghĩ về nó có thể có ý nghĩa bởi vì nó là bootstrapping angularjs một lần nữa khi tôi làm mới trình duyệt. Vì vậy, trong trường hợp đó nó có thể có ý nghĩa rằng tôi không còn có các giá trị trong bộ nhớ cache bạn sẽ đồng ý? – DavidB
Có, trạng thái hoàn toàn bị ràng buộc với tải trang hiện tại. AngularJS (và tất cả các khung công tác MVC phía máy khách) được dự định sẽ được sử dụng trên các ứng dụng một trang (mặc dù chúng không bị giới hạn đối với chúng). Nhưng bạn có thể sử dụng bộ nhớ cục bộ để tồn tại nếu cần. Bạn sẽ chỉ phải tự viết dịch vụ. –