總體來說釘釘小程序的官方文檔都比較全魂爪,部分文檔還需仔細閱讀。除了部分內(nèi)容需要看別的資料哩盲,如css樣式仆抵、復雜布局瀑布流等
1、布局問題
完成如圖所示布局种冬。按照iOS的布局方式(個人為iOS開發(fā))镣丑,首先把所有的子視圖add到父視圖中,然后再通過相對布局or絕對布局的方式,給子視圖設(shè)置對應(yīng)的frame娱两。
但是莺匠,小程序完成圖中的布局,這樣就行不通了十兢,小程序的布局使用flex布局趣竣,個人建議移動開發(fā)人員來開發(fā)小程序的,都可以先看一下這篇文章旱物,開發(fā)起來會事半功倍遥缕!
那么小程序如何完成上圖的布局呢? 首先要給里面的視圖劃分一下塊,劃分的依據(jù)是視圖布局的總體方向(row
or column
)宵呛,看過點前端代碼的都會看到會把控件包裹到一個個view中单匣,目的也是這樣。簡單說一下就是把圖中左側(cè)的image和label劃分為一個塊宝穗,右側(cè)的三個label劃分為另一個塊户秤,這樣頁面中總體的兩個大塊是橫向布局(即row
),塊內(nèi)的image和label是縱向布局(即column
)逮矛,如圖(具體的代碼就不上了):
2鸡号、切換tab參數(shù)攜帶問題
順帶提一下頁面跳轉(zhuǎn)參數(shù)攜帶(文檔):
dd.navigateTo({
url: 'new_page?count=100'
})
首先tab切換需要使用dd.switchTab
:
dd.switchTab({
url: '/home'
})
但是這個方法不能這樣攜帶參數(shù),具體原因可查看官方文檔须鼎,解決的方法使用全局變量鲸伴,在app.js
中添加如下參數(shù):
// 全局變量
globalParams:{
prames1: false,
prames2: 0,
},
在調(diào)用dd.switchTab
之前修改變量值:
var app = getApp();
app.globalParams.prames1 = true;
app.globalParams.prames2 = 1;
dd.switchTab({
url: '/home'
})
在對應(yīng)的tab頁面中獲取響應(yīng)的值即可府蔗,個人是在onShow中獲取:
var app = getApp();
let param1 = app.globalParams.prames1;
3汞窗、手勢穿透問題
主要場景就是父視圖和子視圖都存在點擊事件姓赤,點擊時手勢沖突都會觸發(fā)的問題,這里需要區(qū)分下事件類型:
-
冒泡事件(onTap)
當一個組件上的事件被觸發(fā)后杉辙,該事件會向父節(jié)點傳遞。
-
非冒泡事件(catchTap)
當一個組件上的事件被觸發(fā)后捶朵,該事件不會向父節(jié)點傳遞蜘矢。
不存在bindTap
,也不需要設(shè)置hover-stop-propagation
综看,具體的可以查看官方文檔
4品腹、定時任務(wù)
此處3000為毫秒
setTimeout(function () {
this.doSomething();
}, 3000);
5、小程序中瀑布流的實現(xiàn)
個人參考這篇文章
實踐中唯一出現(xiàn)的問題红碑,就是上下兩個item之前間距的問題舞吭,這里包裹一層,設(shè)置margin-top即可:
<view class='left'>
<block a:for="{{leftlist}}" a:key="index">
<view class="left-item" onTap="onTapLeftItem" data-index={{index}}>
<!-- 此處添加子視圖 -->
</view>
</block>
</view>
6析珊、設(shè)置文本顯示行數(shù)
css中設(shè)置如下:
overflow: hidden;
-webkit-line-clamp: 2;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
display: -webkit-box;
注意不能給視圖設(shè)置height
羡鸥!設(shè)置height會造成文本顯示小半截
7、小程序中使用自定義字體
參考文章忠寻,直接拉到底部查看將圖片轉(zhuǎn)換成BASE64
惧浴,內(nèi)部講到的轉(zhuǎn)換工具,支持的文件類型只能是ttf
奕剃,類型不對自己手動修改下即可使用
8衷旅、網(wǎng)絡(luò)請求
釘釘小程序網(wǎng)絡(luò)請求只支持get和post
,其它按官方文檔使用即可
9纵朋、關(guān)于web-view
首次開發(fā)遇到的問題是在模擬器和預覽時柿顶,可以正常加載網(wǎng)頁,但是在體驗版中操软,網(wǎng)頁加載失敗嘁锯,此問題參照官方文檔,在控制臺設(shè)置白名單
關(guān)于釘釘小程序與H5的交互聂薪,官方文檔也有詳細說明和示例代碼
10猪钮、關(guān)于環(huán)境切換
現(xiàn)在有一個需求:根據(jù)包的類型是體驗版還是發(fā)布版,自動切換當前環(huán)境的url胆建。
簡言之就是要判斷出當前是體驗版還是發(fā)布版烤低,在咨詢過技術(shù)支持之后,遺憾的告訴你笆载,釘釘小程序無法判斷是體驗版還是發(fā)布版