cordova 开发的iOS插件,在回调函数中获取到值后,赋给变量,变量使用的是angularjs2, 进行的双向绑定,即变量值🈶️变化直接反应到页面上。但是我们OC回传给JS前端的值已经有了,前端也收到插件回传的值,就是在回调函数里面赋值的时候,不能双向绑定到页面,即页面的值没有及时更新,需要失去焦点才能更新值,于是查询资料需要
this.cd.markForCheck();//必须引入,标记检查
this.cd.detectChanges();//必须引入,找到修改值
加入上面两个方法,才可以,不过试过之后还是不行,最后把
<label class="choose-contact">{{this.mBankName}}</label>
这个标签换成<div>标签就可以了,完美解决。
解决之后和同事的代码整合后,同事src代码替换过来之后,居然不需要<label>标签换成<div>标签了。
引入上面两行代码就可以了。可以多多尝试一下。
1. ionic2 HTML标签
2. js 导入
import{ChangeDetectorRef}from'@angular/core';
constructor(public cd: ChangeDetectorRef)
3. js代码
//获取信用卡
getCreditBank() {
this.comData.getJson("/odsAuth/listAllCreditBankInfo/0", {},this.userId).then(data => {
if(data.code!="0"){
return;
}
varoptions1_selected= [0];
letdataSource=newArray();
data = data.data;
for(leti=0;i< data.length;i++){
dataSource[i] = {"text":data[i].pbnBankname.toString(),"id":data[i].bankPayCode.toString()};
}
navagator.YHPickerview.showPicker({
"pickerId":"picker1",
"title":"信用卡",
"depth":1,
"selected":options1_selected,
"options":dataSource
}, (results) => {
this.mBankName= results.selectedTextArray[0];
this.bankNO= results.selectedIDArray[0];
this.cd.markForCheck();//必须引入,标记检查
this.cd.detectChanges();//必须引入,找到修改值
}, (errMsg) => {
});
});
}
如果不行多试试几次,重新build, 也可以尝试把Label标签换乘DIV标签。如果不行,欢迎留言。
网友评论