mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-07 06:57:02 +08:00
Added platform provider. Fixes #67
Now you can easily detect the running platform and wait for the device to be ready even if that ready even already fired.
This commit is contained in:
67
js/ext/angular/src/directive/ionicPlatform.js
vendored
Normal file
67
js/ext/angular/src/directive/ionicPlatform.js
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
angular.module('ionic.platform', [])
|
||||
|
||||
/**
|
||||
* The platformProvider makes it easy to set and detect which platform
|
||||
* the app is currently running on. It has some auto detection built in
|
||||
* for PhoneGap and Cordova. This provider also takes care of
|
||||
* initializing some defaults that depend on the platform, such as the
|
||||
* height of header bars on iOS 7.
|
||||
*/
|
||||
.provider('platform', function() {
|
||||
var platform = 'unknown';
|
||||
var isPlatformReady = false;
|
||||
|
||||
if(window.cordova || window.PhoneGap || window.phonegap) {
|
||||
platform = 'cordova';
|
||||
}
|
||||
|
||||
console.log('Detected platform', platform);
|
||||
|
||||
var isReady = function() {
|
||||
if(platform == 'cordova') {
|
||||
return window.device;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
// We need to do some stuff as soon as we know the platform,
|
||||
// like adjust header margins for iOS 7, etc.
|
||||
setTimeout(function afterReadyWait() {
|
||||
if(isReady()) {
|
||||
ionic.Platform.detect();
|
||||
} else {
|
||||
setTimeout(afterReadyWait, 50);
|
||||
}
|
||||
}, 10);
|
||||
|
||||
return {
|
||||
setPlatform: function(p) {
|
||||
platform = p;
|
||||
},
|
||||
$get: ['$q', '$timeout', function($q, $timeout) {
|
||||
return {
|
||||
ready: function(cb) {
|
||||
var self = this;
|
||||
var q = $q.defer();
|
||||
|
||||
$timeout(function readyWait() {
|
||||
if(isReady()) {
|
||||
isPlatformReady = true;
|
||||
q.resolve();
|
||||
cb();
|
||||
} else {
|
||||
$timeout(readyWait, 50);
|
||||
}
|
||||
}, 50);
|
||||
|
||||
return q.promise;
|
||||
}
|
||||
};
|
||||
}]
|
||||
};
|
||||
});
|
||||
|
||||
})(ionic);
|
||||
10
js/ext/angular/src/ionicAngular.js
vendored
10
js/ext/angular/src/ionicAngular.js
vendored
@ -2,12 +2,18 @@
|
||||
* Create a wrapping module to ease having to include too many
|
||||
* modules.
|
||||
*/
|
||||
angular.module('ionic.ui', ['ionic.ui.content',
|
||||
|
||||
angular.module('ionic.ui', [
|
||||
'ionic.ui.content',
|
||||
'ionic.ui.tabs',
|
||||
'ionic.ui.nav',
|
||||
'ionic.ui.sideMenu',
|
||||
'ionic.ui.list',
|
||||
'ionic.ui.checkbox',
|
||||
'ionic.ui.toggle'
|
||||
'ionic.ui.toggle',
|
||||
]);
|
||||
|
||||
angular.module('ionic', [
|
||||
'ionic.platform',
|
||||
'ionic.ui'
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user