SUI踩坑記錄
最近做了個項目選型了SUI和vue做單頁應用。下面記錄一下踩坑經歷
SUI 介紹
sui文檔:http://m.sui.taobao.org/
SUI Mobile 是一套基于 Framework7 開發的UI庫。它非常輕量、精美,只需要引入我們的CDN文件就可以使用,并且能兼容到 iOS 6.0+ 和 Android 4.0+,非常適合開發跨平臺Web App。 SUI 簡單理解就是Framework7的閹割改造版。下面記錄一下主要的注意事項
SUI默認開啟了前端路由。
-
如果需要禁用路由功能,那么可以在 zepto 之后, msui 之前使用
$.config = {router: false}// 來禁用router
picker 相關的坑
Framework7的有個picker modal 可以自定義里面的內容, 但是SUI把這塊刪了。
picker 關閉的時候會全部刪除所有帶 .picker-modal class的元素。所以如果你自定義了個picker想復用樣式。。。。就悲劇了。。。所以還是復制樣式自定義個class吧
-
picker打開的時候背后沒有蒙層,操作的時候如果污點了頁面鏈接,就直接跳走了,解決辦法很簡單,當picker元素open的時候SUI會給body增加一個 with-picker-modal的class,我們給這個class加一個偽元素
.with-picker-modal:before{content:" "; display:block; position:fixed; top:0; left:0; width:100%; height:100%; z-index: 11400; background-color:rgba(0,0,0,.6);
}
picker 沒有destroy方法,但是原始的Framework7是有的http://framework7.taobao.org/...
如果我想只創建一個picker來應對n個輸入框則可以創建一個proxy的元素來實現
<div id="proxyPickerBox" class="hide"><input type="text" /></div>var proxyPicker = {ele:null,init:function(){this.ele = $("#proxyPickerBox");},open:function(item){if(item ===this.targetEle){this.input.picker("open");return;}this.destory();this.ele.append("<input type='text' value=''/>")this.input = this.ele.find("input");this.targetEle = item;var dataData = item.dataData;var values = [];dataData.forEach(function(v){values.push(v.text);})this.input.val(item.showValue||values[0]);this.input.picker({cols: [{textAlign: 'center',values: values,}],onClose: function () {item.dataValue=item.textMap[proxyPicker.input.val()];debugger;item.showValue=proxyPicker.input.val();console.log(proxyPicker.input.val());},});this.input.picker("open");},destory:function(){this.targetEle=null;this.ele.html("");this.picker = null;},targetEle:null}
詳見我的博客https://www.56way.com