/ / Як можна використовувати angular-cache спільно з AngularJS LocalStorageModule - angularjs, angular-cache, angular-local-storage

Як я можу використовувати кутовий кеш спільно з AngularJS LocalStorageModule - angularjs, angular-cache, angular-local-storage

У мене є програма, яка при запуску отримує список користувачів адміністратора. Дані виглядають приблизно так:

var users =
[
{"id":"527ddbd5-14d3-4fb9-a7ae-374e66f635d4","name":"x"},
{"id":"966171f8-4ea1-4008-b6ac-d70c4eee797b","name":"y"},
{"id":"de4e89fe-e1de-4751-9605-d6e1ec698f49","name":"z"}
]

У мене є дзвінок, який отримує ці дані:

 os.getUserProfiles($scope);

і функція:

 getUserProfiles: function ($scope) {

$http.get("/api/UserProfile/GetSelect")
.success(function (data, status, headers, config) {
$scope.option.userProfiles = data;
});
},

Я хотів би уникнути, коли користувачі адміністратора не повинні постійно видавати запити на отримання список користувачів. Я дивився на $ cacheFactory у Angular, але це насправді не так здається, відповідає моїм потребам.

Кутовий кеш, який "на Github, виглядає цікаво, але я не зовсім впевнений, як ним користуватися це з такими об'єктами, а потім зберігають дані, що зберігаються за допомогою LocalStorageModule.

Чи може хтось надати мені приклад того, як вони використовували цей продукт з LocalStorageModule.

Відповіді:

2 для відповіді № 1

Я б запропонував перевірити розширене кутовий-кеш.

Як описано в документації: http://jmdobry.github.io/angular-cache/guide.html#using-angular-cache-with-localStorage

app.service("myService", function ($angularCacheFactory) {

// This cache will sync itself with localStorage if it exists, otherwise it won"t. Every time the
// browser loads this app, this cache will attempt to initialize itself with any data it had
// already saved to localStorage (or sessionStorage if you used that).
var myAwesomeCache = $angularCacheFactory("myAwesomeCache", {
maxAge: 900000, // Items added to this cache expire after 15 minutes.
cacheFlushInterval: 3600000, // This cache will clear itself every hour.
deleteOnExpire: "aggressive", // Items will be deleted from this cache right when they expire.
storageMode: "localStorage" // This cache will sync itself with `localStorage`.
});
});

Або ми можемо вставити власну реалізацію локального сховища

storageImpl: localStoragePolyfill // angular-cache will use this polyfill instead of looking for localStorage

Я використовую цей плагін https://github.com/grevory/angular-local-storage, який дійсно простий у використанні, надаючи повний API.

Також перевірте використання місцевого зберігання для кешування шаблонів: як кешувати angularjs partials?

ПРИМІТКА. Ця стаття Увімкніть кутовий сервіс s $ http за допомогою кешування, і в основному розділ:
Розширене кешування, був для мене причина перейти на кутовий-кеш

Як створити спеціальний Polyfill? (Шаблон адаптера)

Як задокументовано тут, нам потрібно пройти localStoragePolyfill реалізація цього інтерфейсу:

interface Storage {
readonly attribute unsigned long length;
DOMString? key(unsigned long index);
getter DOMString getItem(DOMString key);
setter creator void setItem(DOMString key, DOMString value);
deleter void removeItem(DOMString key);
void clear();
};

angular-cache піклується лише про ці три методи:

  • setItem
  • getItem
  • removeItem

I.e .: Вкажіть обгортку, розмовляючи з API місцевого зберігання, трансформуючи її в розширений api-кеш. Це все. Нічого іншого