0

私のアプリを Android エミュレーターにエミュレートすると、CordovaLog は私に Error Cannot Call method setOptions of undefined.In my Chrome Browser 問題はありませんが、エミュレートすると結果は良くありません。それは機能しません。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 に答える