При эмуляции моего приложения на Android возникает ошибка, при которой метод setOptions углового кэша не может быть вызван
Когда эмулируется мое приложение в эмулятор Android, CordovaLog выдает мне метод Ошибка Невозможно вызвать setOptions метода undefined. В моем браузере Chrome у меня нет проблем, но когда я эмулирую его, результат не очень хороший, не загружаются все мои представления, но часть это и не работает. Может кто-нибудь сказать мне, как я могу определить setOptions или почему не определено
(function () {
'use strict';
angular.module('EventList').factory('EventApi', [ '$http', '$q', '$ionicLoading', 'DSCacheFactory', EventApi]);
function EventApi($http, $q, $ionicLoading, DSCacheFactory)
{
var AllEventCache = DSCacheFactory.get("AllEventDataCache");
AllEventCache.setOptions({
onExpire: function (key, value) {
getAllEvents()
.then(function () {
console.log("Automatically refreshed");
}, function () {
console.log("Error putting Expired data");
AllEventCache.put(key, value);
});
}
});
})();
.run(function ($ionicPlatform, DSCacheFactory) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
var AllEventCache = DSCacheFactory("AllEventDataCache", { storageMode: "localStorage", maxAge: 360000, deleteOnExpire: "aggressive" });
});
})
1 ответ
Я думаю, что у меня есть решение. У меня такая же проблема в iOs (она работает на Localhost, но при сборке в xcode, она не работает... так же, как ваша ситуация с Android). Если вы обновляете в Chrome как связанное время, вы также увидите ту же ошибку.
Проблема в том, что вам нужно поставить
DSCacheFactory("AllEventDataCache", { storageMode: "localStorage", maxAge: 360000, deleteOnExpire: "aggressive" });
на вашу фабрику. Вместо определения вашего AllEventCache во время выполнения (в вашем файле app.js, который я предположил?), Извлеките его и определите непосредственно в вашем заводском js-файле следующим образом:
angular.module('EventList').factory('EventApi', [ '$http', '$q', '$ionicLoading', 'DSCacheFactory', EventApi]);
function EventApi($http, $q, $ionicLoading, DSCacheFactory)
{
DSCacheFactory("AllEventDataCache", { storageMode: "localStorage", maxAge: 360000, deleteOnExpire: "aggressive" });
var AllEventCache = DSCacheFactory.get("AllEventDataCache");
AllEventCache.setOptions({
onExpire: function (key, value) {
getAllEvents()
.then(function () {
Надеюсь, эта работа для вас тоже:)