使用framework7总结

中文官网

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或者引入相关插件转换

转载于:https://my.oschina.net/AnymoreCoder/blog/2872685

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值