2016-09-28 89 views
0

我有角應用並使用Mobile-first 8.如何檢查MobileFirst是否已加載?我需要先等待科爾多瓦被裝上嗎?檢查mobilefirst是否已加載

在V7.1中,我有一個返回cordova設備對象的MobileFirst包裝。然而,因爲它現在是一個插件,我不知道如何檢查...

我沒有WLCommonInit函數。我正在使用「angular.run」函數,該函數在加載應用程序之前被注入並執行。在這裏我的代碼在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); 
    } 

    } 
    })(); 

我看着一個示例角度的應用程序與Mobilefirst,但它使用'angular.bootstrap'。不過,我需要將我的應用綁定到ng- *。所以,我不能用它

感謝您的幫助..

回答

0

爲什麼不使用wlCommonInit?正是出於這個原因。

請參閱以下博客文章的最佳實踐構建AngularJS應用與MobileFirst基金會8.0:https://mobilefirstplatform.ibmcloud.com/blog/2016/08/11/best-practices-for-building-angularjs-apps-with-mobilefirst-foundation-8.0/

+0

我的問題是我如何從angular.run方法中使用wlCommonInit ,,,我不知道它怎麼會打電話,,另外,我是否已經先載入科爾多瓦。基本上我想檢查的是Mobile first和cordova是可用的..在7.1的代碼中,angular.run函數調用WL.Client.init和WL.Client.connect ... – user2570135

+0

您不應該調用connect at所有。我建議你首先閱讀v80中的所有更改,然後再着手對應用程序進行更改...檢查文檔 –

相關問題