需求:
header写在win中,点击win中的底部菜单导航打开frame,打开不同frame修改header的标题,以及给当前的活动菜单添加class
思路:
利用api.execScript把需要的值在frame中传回win,在win中操作标题( $api.html(el, title))和改变class($api.addCls(el, 'aui-active'))
代码:
1、Frame中:(注意放在apiready中)
var jsfun = 'setHeaderInfo("fav","收藏");';
api.execScript({
name: 'header', //winName
script: jsfun
});
2、Win中:(即包含header的页面,定义frame中的isfun)
function setHeaderInfo(name, title) {
var header = $api.byId('header'),
cur_bot_nav = $api.dom('.b-nav-' + name),//需要添加active的nav
pre_nav = $api.dom('.b-nav-' + cur_frame);//上一个活动的nav
cur_frame = name;//赋值,下次切换时可以找到需要移除active的nav
$api.html(header, title); //设置头部标题
$api.removeCls(pre_nav, 'aui-active');//移除active
$api.addCls(cur_bot_nav, 'aui-active'); //底部添加当前活动tab
}
写在最后:按照文档起初也是这样子写,win中一直调用不到参数,纠结了两晚上,最后灵光一闪,脑子一热,重新编译,哦了。所以遇到莫名其妙不是代码的问题的时候,重新编译过再来就对了!!!