$scope.chatStru.paySrc = $sce.trustAsResourceUrl('http://xxx.cn/oe/testlogin.jsp?tt=' + tt);
};
7、使用android studio 运行cordova项目
直接使用platfrom目录里的gradle 可以在android studio中直接导入 cordova的项目,但运行模拟器时出现
Cannot reload AVD list: cvc-enumeration-valid: Value '280dpi' is not facet-valid with respect to enumeration '[ldpi, mdpi, tvdpi, hdpi, xhdpi, 400dpi, xxhdpi, 560dpi, xxxhdpi]'. It must be a value from the enumeration.
Error parsing D:\sdkforas\android-sdk-windows\system-images\android-22\android-wear\armeabi-v7a\devices.xml
cvc-enumeration-valid: Value '280dpi' is not facet-valid with respect to enumeration '[ldpi, mdpi, tvdpi, hdpi, xhdpi, 400dpi, xxhdpi, 560dpi, xxxhdpi]'. It must be a value from the enumeration.
Error parsing D:\sdkforas\android-sdk-windows\system-images\android-22\android-wear\x86\devices.xml
解决方法 :
用/sdk/tools/lib/devices.xml去替换 system-images\android-22\android-wear\x86\devices.xml和system-images \android-22\android-wear\armeabi-v7a\devices.xml中的devices.xml
8、 android studio 中 gradle 失败
gradle project sync failed.Basic functionality(e.g.editing,debugging) will not work properly.
解决方法:android studio中,点击 tools ->Android->sync project with gradles files.
9、加载远程js或css 出现
Refused to load the script 或 Refused to load the stylesheet
because it violates
the following ....
例如 index.html中 加载字体
《link href='http://fonts.useso.com/css?family=RobotoDraft:400,500,700,400italic' rel='stylesheet'》
可在index.html添加安全许可
《meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline' http://fonts.useso.com ; script-src 'self' 'unsafe-inline' 'unsafe-eval';"》
直接加根域名即可,另外不要带引号 js 需要添加在 script-src 中。
10 、 ionic 中 弹出键盘遮挡住输入框
在config.xml 中修改全屏为FALSE并添加 adjustPan (adjstResize没有成功)
《preference name="Fullscreen" value="False" /》
《preference name="android-windowSoftInputMode" value="adjustPan"/》
11、ionic监听滚动
网上的示例xxx.bind('scroll',function(){.....}),很容易将页面跑死, 换个思路,使用监听touch
var targetPos = window.screen.availHeight;
$("#scdiv").on("touchend", function () {
if (currpos > 10 && currpos < targetPos / 4) {
$ionicScrollDelegate.$getByHandle('homescroll').scrollTo(0, 0, true);
return false;
} else if (currpos >= targetPos / 4 && currpos <= targetPos - 10) {
$ionicScrollDelegate.$getByHandle('homescroll').scrollTo(0, targetPos - 64, true);
return false;
}
})
当触摸结束时,判断当前的位移,来做一些操作。这样在性能上提高了许多。
$ionicScrollDelegate.$getByHandle 操作的是在html中定义的delegate-handle
如《ion-content id="scdiv" delegate-handle="homescroll"》
12、 APP开启检测网络并提示开启
需要三个插件
1、https://github.com/apache/cordova-plugin-network-information
2、https://github.com/apache/cordova-plugin-dialogs
3、https://github.com/deefactorial/Cordova-open-native-settings
然后在APP.JS中,divicesReady中
$ionicPlatform.ready(function () {
if (navigator.connection) {
var tmptypes = navigator.connection.type;
if (tmptypes.toUpperCase().indexOf('NONE') > -1 || tmptypes.toUpperCase().indexOf('UNKNOWN') > -1) {
if (navigator.notification) {
navigator.notification.confirm(
'您的设备未开启网络',
function (buttonIndex) {
if (buttonIndex == 1) {
if (cordova.plugins.settings) {
cordova.plugins.settings.openSetting("wifi", function () { console.log("network setting openning"); }, function () { console.log("open network setting failed"); });
}
}
}, // callback to invoke with index of button pressed
'提示', // title
['开启', '取消'] // buttonLabels
);
}
}
}
})
其中openSettings中可设置以下本地设置
var settingNames = array(
"open",
"accessibility",
"add_account",
"airplane_mode",
"apn",
"application_details",
"application_development",
"application",
"bluetooth",
"captioning",
"cast",
"data_roaming",
"date",
"device_info",
"display",
"dream",
"home",
"input_method",
"input_method_subtype",
"internal_storage",
"locale",
"location_source",
"manage_all_applications",
"manage_applications",
"memory_card",
"network_operator",
"nfcsharing",
"nfc_payment",
"nfc_settings",
"print",
"privacy",
"quick_launch",
"search",
"security",
"settings",
"show_regulatory_info",
"sound",
"sync",
"usage_access",
"user_dictionary",
"voice_input",
"wifi_ip",
"wifi",
"wireless");
其中相关网络的为wifi 移动数据开启未找到。谁试出了是哪个请告诉我
13、$sate.go 和 $stateParams 传参及收参
在 controller1 中使用 $state.go('statename',{id:1}) ;传递参数
在 statename 相对应的 controller2 中接收参数
$scope.id = $stateParams.id;
注意,此处必须在router.js 中设置 statename 的参数形式
如.state('statename ', {
url: '/statename ',
params: { 'id': null },
templateUrl: 'templates/Users/statename .html',
controller: 'controller2 '
})
其中params: { 'id': null }, 对应$state传的参,若不设,则必为undefined
14、关于ionic中想底部加一长按钮,随页面滚动位置不变,例如
最初的方案是在 ion-content 外 ion-view 内添加一层
div .....style= ..... position:fixed bottom:0px;之类,但最终发现,在不同分辨率下位置并不正确
基本可确定是因为statusbar等的缘故,仔细看了下ionic.css最终发现,太简单了
div class="tabs" 就可以了。
15、php中取值问题
ionic中用的$http method:post ,params........在PHP中用$_POST取不到值, 改成 $_Request 就行了。
16、使用vs2015 release
会提示使用发布配置进行调试时,Android 程序包必须已签名。要配置 Android 签名,请按照 http://go.microsoft.com/fwlink/?LinkID=613579 中的说明操作(该网页很难打开)
实际需要在项目根目录的build.json中添加生成的keystore
{
"android": {
"release": {
"keystore": "E:\\Projects\\android.keystore",
"storePassword": "*******",
"alias": "********",
"password": "*******",
"keystoreType": ""
}
}
}
至于生成keystore 请百度,只要有jdk 运行命令就OK
17、ionic 的滚动优化
在app.js中的config 块中,加入
$ionicConfigProvider.scrolling.jsScrolling(false);
默认所有的滚动使用native,会比js的滚动快很多,并且很平滑,
但这样做的话,无法使用一些效果,如has-bouncing="true"(仿苹果的一种上下拉显示背景的弹性效果)
那你可以在特定的view中,ion-content中加入overflow-scroll="false",则该view保持js滚动
18、微信支付
支付宝支付非常简单,文档也很丰富,微信的相对来说低了不止一个档次,当然最郁闷的一件事是
经过了数天的查错,发现微信的totalfee 居然是以分为单位,换句话来说,你传价格时,只会有整数
如果出现0.01,那必然出错。