问题描述
博主嵌套了两层,然后全量同步在模拟器上时,在FrameGroup(假设此时有两个frame a、b)中的Frame(假设名为a)嵌套的FrameGroup(c、d)的Frame(假设名为c)覆盖了b。
解决方法
1)首先在a对应的api.openFrameGroup()方法的回调事件中对ret.index进行判断(设a对应的index为2)则有
function(ret, err) {
if (ret.index != 2) {//如果ret.index不等于2则隐藏a中嵌套的FrameGroup,即当前Frame不是a
api.setFrameGroupAttr({
name: 'Cdb_Group',
hidden: true
});
}else {//否则不隐藏,即当前Frame是a
api.setFrameGroupAttr({
name: 'Cdb_Group',
hidden: false
});
}
);
2)但是任然会存在一个问题,在页面第一次渲染的时候a对应的FrameGroup中的Frame即c任然会显示(即对b产生覆盖),相当于Frame第一次载入的时候回调事件中的隐藏并不会执行,只有第二次进入Frame会进行回调事件的隐藏,且第一次载入会覆盖,是因为api.openFrameGroup()中有个preload属性(重点),默认的值是1,即会加载当前页之后的第一个frame!,所以在前面的回调事件的基础上需给该回调事件对应的api.openFrameGroup()方法中的preload属性值设为0即可。如
preload:0,//preload默认值为1 即加载当前页的后一个frame