我有这个奇怪的问题,我正在使用离子框架开发一个Android应用程序并使用cordova插件来访问本机android函数。 当$ ionicPlatform.ready事件被触发时,应该调用cordova文档建议的那些插件,所以我将包含cordova函数的代码括在:
$ionicPlatform.ready(function(){
// some cordova plugin code e.g $cordovaVibration.vibrate([100]);
})
奇怪的行为是每当我使用此命令在真实设备上测试我的应用程序时:
$ ionic run android -c -l
所有功能完美无误地运行。 现在,当我构建并签署我的应用程序时,将其部署到同一个真实设备
$ionicPlatform.ready(function(){
//some code
})
只在angular.module(....)内执行一次.run(...){...} 只有在我锁定屏幕然后解锁之后。
中的所有代码$ionicPlatform.ready(function(){
//some code
})
不起作用。 这是app.js中的代码:
angular.module('conFusion', ['ionic', 'ngCordova', 'app.controllers','app.services'])
.run(function($ionicPlatform, $rootScope, $ionicLoading, $cordovaSplashscreen, $timeout) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
$timeout(function() {
$cordovaSplashscreen.hide();
}, 3000);
});
// the rest of code goes here
你可以看到$ cordovaSplashscreen.hide();除非触发$ ionicPlatform.ready,否则无法执行。事情是只有当我锁定屏幕然后解锁它时才会隐藏启动画面,但是从不执行属于其他插件的代码。
更新
将侦听器格式$ ionicPlatform.ready更改为
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){ .... }
无济于事。
使用
测试应用时$ cordova run android
或
$ ionic run android
侦听器函数中包含的代码将不会执行。 但是在使用命令测试应用程序时:
$ ionic run android -c -l
该应用程序运作正常
答案 0 :(得分:0)
$string_custom_attr_values = 'S|M|L|XL';
$arr_custom_attr_values = explode("|", $string_custom_attr_values);
$total_variations = count($arr_custom_attr_values);
$variation_post_id = $post_id;
for($i = 1; $i <= $total_variations; $i++) {
$variation_post_id += $i;
$variation_post = array(
'post_title' => 'Variation #' . $variation_post_id . ' of ' . $item['termek'],
'post_name' => 'product-' . $variation_post_id . '-variation',
'post_status' => 'publish',
'post_parent' => $post_id,
'post_type' => 'product_variation',
'guid' => home_url() . '/product_variation/product-' . $variation_post_id . '-variation',
'menu_order' => $i
);
// Insert the variation post into the database
$variation_post_id = wp_insert_post( $variation_post );
update_post_meta( $variation_post_id, 'attribute_'.$custom_attribute_name, $arr_custom_attr_values[$i-1]);
/*Rest of the post_meta like in the base product*/
}//end for
尝试在$ ionicPlatform.ready函数中使用此事件侦听器。也许这会对你有所帮助:)()
答案 1 :(得分:0)
经过大量检查后,我终于能够确定原因并加以解决。
问题在于这个确切的cordova插件:
https://github.com/katzer/cordova-plugin-local-notifications.git
我刚把它删除了,瞧!一切正常,没有更奇怪的行为。
我找到的一个有用的工具就是这个chrome插件https://chrome.google.com/webstore/detail/adb/dpngiggdglpdnjdoaefidgiigpemgage 它允许使用console.log()进行远程调试; Ionic app中的说明。