2016-09-28 7 views
0

Ich habe eckige App und Mobile-First 8. Wie kann ich überprüfen, dass MobileFirst geladen ist ?. Muss ich warten, dass Cordova zuerst geladen wird?Prüfen, ob mobilefirst geladen ist

In V7.1 habe ich einen Wrapper für MobileFirst, der das cordova-Geräteobjekt zurückgibt. Wie auch immer, da es jetzt ein Plugin ist, bin ich nicht sicher, wie man es überprüft ...

Ich habe keine WLCommonInit-Funktion. Ich benutze "angular.run" -Funktion, die injiziert und ausgeführt wird, bevor die App geladen wird. Hier ist mein mein Code in 7,1

(function() { 
     'use strict'; 
    angular 
    .module('local_worklight', []) 
    .run(WorklightRun) 

    WorklightRun.$inject = ['$rootScope', '$q']; 

    function WorklightRun($rootScope, $q) { 

    // Worklight statuss 
    var initDeferred = $q.defer(); 
    $rootScope.worklightInitPromise = initDeferred.promise; 
    $rootScope.worklightLoaded = false; 

    var connectionDeferred = $q.defer(); 
    $rootScope.worklightConnectionPromise = connectionDeferred.promise; 
    $rootScope.worklightConnected = false; 

    // Listen for load/onload and start worklight init 
    if (window.addEventListener) { 
     window.addEventListener('load', loadHandler, false); 
    } else if (window.attachEvent) { 
     window.attachEvent('onload', loadHandler); 
    } 

    // Worklight connect options 
    var wlConnectOptions = { 
     timeout: 10000, 

     onFailure: connectionFailure, 

     onSuccess: function() { 
     console.log('MFP: Connected'); 
     $rootScope.worklightConnected = true; 
     connectionDeferred.resolve(); 
     } 
    }; 

    // Worklight init options 
    var wlInitOptions = { 
     timeout: 10000, 

     onConnectionFailure: initFailure, 

     onFailure: initFailure, 

     onSuccess: function() { 
     console.log('MFP: Loaded'); 
     initDeferred.resolve(); 
     $rootScope.worklightLoaded = true; 
     if (window.addEventListener) { 
      window.addEventListener(WL.Events.WORKLIGHT_IS_CONNECTED, wlConnectedHandler, true); 
      window.addEventListener(WL.Events.WORKLIGHT_IS_DISCONNECTED, wlDisconnectedHandler, true); 
     } else if (window.attachEvent) { 
      window.attachEvent(WL.Events.WORKLIGHT_IS_CONNECTED, wlConnectedHandler); 
      window.attachEvent(WL.Events.WORKLIGHT_IS_DISCONNECTED, wlDisconnectedHandler); 
     } 
     console.log('MFP: About to connect - ' + JSON.stringify(wlConnectOptions, null, 2)); 
     WL.Client.connect(wlConnectOptions); 
     } 
    }; 

    var worklightLoadEvent = null; 
    worklightLoadEvent = document.createEvent('CustomEvent'); 

    function loadHandler() { 
     try { 
     console.log('MFP: Load event detected, about to init - ' + JSON.stringify(wlInitOptions, null, 2)); 
     WL.Client.init(wlInitOptions); 
     } catch (err) { 
     console.error('MFP: "WL" init error - ' + err); 
     initFailure(err); 
     worklightLoadEvent.initCustomEvent('worklightLoadFailure', true, false, {}); 
     window.dispatchEvent(worklightLoadEvent); 
     } 
    } 

    function wlConnectedHandler() { 
     $rootScope.worklightConnected = true; 
     WL.App.hideSplashScreen(); 
    } 

    function wlDisconnectedHandler() { 
     $rootScope.worklightFailureAcknowledged = true; 
     $rootScope.worklightConnected = false; 
     WL.App.hideSplashScreen(); 
    } 

    function connectionFailure(err) { 
     console.log('MFP: No Connection - ' + JSON.stringify(err, null, 2)); 
     connectionDeferred.reject(err); 
    } 

    function initFailure (err) { 
     console.log('MFP: init failed - ' + err); 
     initDeferred.reject(err); 
     connectionFailure(err); 
    } 

    } 
    })(); 

sehe ich eine Probe Winkel App mit Mobilefirst aber es nutzt ‚angular.bootstrap‘. Allerdings muss ich meine App an ng- * binden. so kann ich es nicht

Vielen Dank für Ihre Hilfe ..

Antwort

0

Warum nicht wlCommonInit verwendet benutzen? Es ist genau aus diesem Grund da.

Sehen Sie im folgenden Blog-Post für Best Practices für den Aufbau AngularJS Anwendungen mit MobileFirst Foundation 8.0: https://mobilefirstplatform.ibmcloud.com/blog/2016/08/11/best-practices-for-building-angularjs-apps-with-mobilefirst-foundation-8.0/

+0

Meine Frage ist, wie ich verwendet wlCommonInit aus der angular.run Methode ,,, Ich bin nicht sicher, wie wird es Rufen Sie an, auch, habe ich Cordova zuerst laden. im Grunde, was ich überprüfen möchte, ist, dass Mobile zuerst und cordova verfügbar ist. Im Code für 7.1, die angular.run Funktionsaufruf WL.Client.init und WL.Client.connect ... – user2570135

+0

Sie sollten nicht verbinden an alle. Ich schlage vor, dass Sie zuerst alle Änderungen in v80 lesen, bevor Sie mit Änderungen an Ihrer App beginnen. Weitere Informationen finden Sie in der Dokumentation –