具体来说,我正在使用Ionic。我遇到了在设备准备好之前调用的全局函数问题。如何将数据从全局javascript函数移动到Angular并防止这种竞争条件?
答案 0 :(得分:0)
想出来。此示例特定于https://branch.io/,但它允许我使用全局javascript函数并使用injector()
将数据推送到角度。
在全局函数中侦听分支数据,保存到角
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());
};
})