如何将全局javascript集成到角度?

时间:2016-11-02 21:18:38

标签: angularjs ionic-framework branch.io

具体来说,我正在使用Ionic。我遇到了在设备准备好之前调用的全局函数问题。如何将数据从全局javascript函数移动到Angular并防止这种竞争条件?

1 个答案:

答案 0 :(得分:0)

想出来。此示例特定于https://branch.io/,但它允许我使用全局javascript函数并使用injector()将数据推送到角度。

Global AngLinkHandler进入Angular

  

在全局函数中侦听分支数据,保存到角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');
  }
}
  

angular 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());
  };
})