1.布局 项目布局可以参照官方文档自行组合,但一定要注意严格按照层级结构和类命名来拆分和组合。
2.<template></template>中的{{#each}}{{/each}}取值问题
比如data中取到的值是这样的:
data: function () {
return {
id: 001,
arr:[{k:'k1',v:'v1'},{k:'k2',v:'v2'}]
}
}
那么,在遍历arr的each语句中要取值取到id可以这样操作:
{{#each arr}}
<p>k值:{{this.k}}</p>
<p>v值:{{this.v}}</p>
<p>id:{{../id}}</p>
{{/each}}
3.checkbox初始化、默认选中、正确监听
<label class="item-checkbox item-content" @change="selectItem">
<input type="checkbox" class="checkItem" name="checkItem" value="{{key}}" {{#if selected}}checked="checked"{{/if}} /> //默认选中
<i class="icon icon-checkbox"></i>
<div class="item-inner">
<div class="item-title">{{key}}</div>
</div>
</label>
默认不选中,则checked="checked"去掉即可,写成checked="false"无效。
正确监听(如果直接取值$$('.className')[0].checked,有时候反复勾选获取到的值不准确):
methods: {
selectItem: function (e){
var self = this;
var $ = self.$$;
console.log(e.target.checked);//监听是否选中true or false
}
}
4.页面间传值
<a href="/mySecondPage/?id=001&name=hello">跳转页面</a>
on: {
pageInit: function (event, page) {
var self = this;
console.log(page.route.query.id); //001
console.log(page.route.query.name); //hello
}
}
5.无限下拉方法@infinite="loadMore"加载出来的数据初始长度必须超过一屏,可大致估计需要的数据长度,我这里是8条。
if(self.msgList.length > 0 && self.msgList.length < 8){ //初始长度不够时自动loadmore
self.loadMore();
}
6.IOS顶部重叠问题
其实就是官方文档中说的这个问题
var app = new Framework7({
statusbar: {
iosOverlaysWebView: true,
},
});
7.判断当前设备是Android还是IOS
8.获取屏幕高度
var WIN_HEIGHT = $$(window).height();
9.回退、回退之后主页面刷新
常见应用场景:列表->详情编辑
//回退
<div class="navbar">
<div class="navbar-inner">
<div class="left">
<a href="#" class="link" @click="back">
<i class="icon icon-back"></i>
<span>返回</span>
</a>
</div>
<div class="title">详情</div>
<div class="right"></div>
</div>
</div>
back:function () {
mainView.router.back()
}
回退列表页刷新,试过在back中加参数,但列表页取不到带过来的参数,于是直接在列表页处理了。
//列表页的初始化方法写在pageBeforeIn中
pageBeforeIn:function(event, page){
var self = this;
if(JSON.stringify(page.route.query) !== '{}'){ //可区分是直接进的列表页还是回退回的列表页
//TODO
}
//init TODO
}
10.获取历史纪录
pageInit: function (event, page) {
var arr = page.router.history; //历史纪录
var prePage = page.router.history[page.router.history.length-2]; //上一页
var currPage = page.router.history[page.router.history.length-1]; //本页
}
11.Scrollable Tabbar可滚动导航栏显示不完整问题
官网中的可滚动导航栏存在后面的tab项看不完整的问题,如下图
解决方案:
//点击Tab4或Tab5时触发
$('.tabbar-scrollable .toolbar-inner').scrollLeft(1000); //顶部导航定位到后面
12.低版本ios(大概10以下)和安卓(大概5.2以下)真机出现白屏现象的原因
检测是否有es6语法,如果有,手动改成es5或者引入相关插件转换