У мене є програма, яка при запуску отримує список користувачів адміністратора. Дані виглядають приблизно так:
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-кеш. Це все. Нічого іншого