При эмуляции моего приложения на 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 () {

Надеюсь, эта работа для вас тоже:)

Другие вопросы по тегам