前言
标准开头,前一段时间因为需要开发一个简单的app,所以接触了一下Apicloud,因为没有native应用的开发知识,所以采用了Apicloud的web应用开发。其中不同页面的传值问题我具体研究一段时间,因为之前一直传值不成功。
正文
方法一:api.execScript
这个方法本来的功能是用来不同页面的函数的传递,当然,也可以用来传递值,将这个值作为函数的参数就可以传递到其他页面。具体:
index1:
//name是该页面函数的参数,作为参数传递到另一个页面
var str="test("+name+")";
api.exeScript({
name:"index2",
script:str});
index2:
//index2页面代码
function test(name){
alert(name);
}
方法:api.addEventListener&&api.sendEvent
这个是利用广播事件传递参数。
index1:发送广播
api.sendEvent({
name:'myEvent',
extra:{key1:'value',key2:'key2'}
});
index2:接受广播
api.addEventListener({
name:'myEvent'},
function(ret){
if(ret&&ret.value){
var value = ret.value;
alert(value.key1+','+value.key2);
}
});
方法三 :api.LocalStorage
这个方法很简单,采用了本地数据存储的方法来交换数据。
index1:
$api.setStorage('name','value');//数据存储
index2:
$api.getStorage('name');//取出name值
另外:
$api.rnStorage('name');//清除name值
$api.clearStorage('name');//清除所有本地数据
方法四 :api.openWin&api.openFrame&api.openFrameGroup
最后最简单的是采用打开窗口时可以顺带传值。
index1:
//打开新窗口
api.openWin({
name:index2,
url:index2.html,
pageParam: {
key : value,
}
});
//打开frame组
api.openFrameGroup({
name: 'group1',
rect: { //frame的位置
x: 0,
y: 0,
w: 'auto',
h: 'auto'
},
frames: [{ //frame组
name: 'frame1',
url: 'frame1.html',
bgColor: '#fff'
}, {
name: 'frame2',
url: 'frame2.html',
bgColor: '#fff'
}]
}, function(ret, err) { //回调函数
var index = ret.index;
});
index2:
apiready=function(){
var test=api.pageParam.key;
alert(test);
}