2016-11-02 2 views
0

В частности, я использую Ionic. У меня проблемы с глобальной функцией, которая вызывается до того, как устройство будет готово. Как перенести данные из глобальной функции javascript в Angular и предотвратить это состояние гонки?Как интегрировать глобальный javascript в угловой?

ответ

0

Выяснил это. Этот пример специфичен для https://branch.io/, но он позволяет мне иметь глобальную функцию javascript и вставлять данные в угловые, используя injector().

Global DeepLinkHandler в угловой

слушать данные филиала в глобальной функции, за исключением углового DeepLink завода

// a global function 
function DeepLinkHandler(data) { 
    if (data) { 
    // access the angular Factory('DeepLink') 
    angular.element(document.querySelector('[ng-app]')).injector().get('DeepLink').set(data); 
    console.log('Data Link handler response: ' + JSON.stringify(data)); 
    } else { 
    console.error('Data Link handler no data'); 
    } 
} 

угловых DeepLink завод

angular.module('starter.services', []) 

.factory('DeepLink', function($window, $timeout) { 
    var data = {}; 

    return { 
    get: function() { 
     return data; 
    }, 
    set: function(json) { 
     // use the angular version of timeout 
     $timeout(function() { 
     // set the data 
     data = json; 
     // navigate example 
     $window.location = "#/tab/chats/3"; 
     }, 0); 
    } 
    }; 
}); 

доступ угловой DeepLink завод

angular.module('starter.controllers', []) 

.controller('DashCtrl', function($scope, DeepLink) { 
    $scope.content = {} 
    $scope.buttonPressed = function() { 
    // put branch data into a label that has ng-model content.data 
    $scope.content.data = JSON.stringify(DeepLink.get()); 
    }; 
}) 
Смежные вопросы