0

当将我的应用程序模拟到 android 模拟器时,CordovaLog 给我一个错误,无法调用未定义的 setOptions 方法。在我的 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" });

    });
   })
4

1 回答 1

3

我想我有解决办法。我在 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 () {

希望这对你也有用:)

于 2015-01-05T07:58:38.523 回答