>[info] `H.$tppl`:模板引擎核心方法,就一個方法,非常簡單。
- #### **編寫模板**
使用一個`type="text/html"`的`script`標簽存放模板:
```
<script id="test" type="text/html">
[: if (title){ :]
[: for (var i=0;i<list.length;i++) { :]
<div>[:=i:]. [:=list[i]:]</div>
[:}:]
[:}:]
</script>
```
- #### **渲染模板**
```
<script type="text/javascript">
H.ready(function() {
// json數據
var data = {
title : '標簽',
list : ['文藝', '博客', '攝影', '電影', '民謠', '旅行', '吉他']
};
// 獲取模板內容,并加載數據
var html = H.$tppl(H.$api.byId('test').innerHTML, data);
// 將渲染的結果設置給指定div
H.$api.byId('body').innerHTML = html;
});
</script>
```
- #### **方法**
- `tppl(tpl, data)`:返回渲染好的模板內容。
- `tppl(tpl)`:返回渲染函數。
```
var tpl = "..." , data = {...};
var render = tppl(tpl); //渲染函數
var html = render(data); //重復使用
```
- #### **默認模板占位符**
`[:`:代碼開始區域
`:]`:代碼結束區域
如果不喜歡默認模板占位符,可以自行定制
```
//注意:必須在模板引擎渲染之前調用,也就是`H.$tppl(tpl,data);`之前。
`H.$tppl_flag=['<%','%>'];`
```
設置了之后,上面的模板可以更改為:
```
<script id="test" type="text/html">
<% if (title){ %>
<% for (var i=0;i<list.length;i++) { %>
<div><%=i%>. <%=list[i]%></div>
<%}%>
<%}%>
</script>
```
- #### **基本使用**
`[:=變量 :]`:輸出變量
`[: javascript代碼 :]`:書寫基本`javascript`代碼,只能是一行`javascript`代碼。
- #### **變量默認值**
1、為未定義的或值為假的變量給出默認值:
```
[:=foo||"變量foo存在但值為假":]
[:=this.foo||"變量foo不存在或為假!":]
```
2、避免未定義的變量引起系統崩潰:
若模板中定義了一個變量輸出,但傳入數據中卻沒有這個變量,模板解析就會出錯,從而引起整個程序的崩潰。如果無法確保數據完整性,仍然有方法可以對對其成員進行探測。在需要檢測的變量前加關鍵字 this,如:
```
[: if (this.dataName !== undefined) { :]
[:= dataName :]
[: } :]
```
3、也可為不存在的變量設置默認值:
```
[:=this.foo||"變量foo不存在或為假!":]
```
好了,就這么簡單!
- 序言簡介
- 約定與規則
- 捐贈與外包
- 版本更新
- 開始使用
- 常用接口
- 方法
- $addEventListener
- $ajax
- $alert
- $bringFrameToFront
- $cancelAjax
- $cancelDownload
- $clearCache
- $clearStorage
- $closeCurrentFrame
- $closeCurrentToWin
- $closeCurrentWin
- $confirm
- $dblclickToCloseApp
- $download
- $dropdownToRefresh
- $dropupToAppend
- $execScript
- $fixStatusBar
- $getPageParam
- $getPicture
- $getPrefs
- $getStorage
- $hideProgress
- $imageCache
- $openFrame
- $openFrameGroup
- $openFrameWithNav
- $openFrameGroupWithNav
- $openPicker
- $openSlidLayout
- $openVideo
- $openWin
- $prompt
- $readFile
- $require
- $recoverDropdownToNormal
- $removeEventListener
- $removePrefs
- $removeStorage
- $saveMediaToAlbum
- $sendEvent
- $setAutoDropdownToRefresh
- $setFrameGroupIndex
- $setFrameStatus
- $setPrefs
- $setStorage
- $shock
- $showProgress
- $startPlay
- $stopPlay
- $startRecord
- $stopRecord
- $toast
- $writeFile
- 事件
- $appintent
- $batterylow
- $batterystatus
- $keyback
- $keymenu
- $noticeclicked
- $offline
- $online
- $pause
- $resume
- $scrolltobottom
- $shake
- $smartupdatefinish
- $swipedown
- $swipeleft
- $swiperight
- $swipeup
- $tap
- $viewappear
- $viewdisappear
- 公開接口
- H.$tppl_flag 模板占位符
- H.$v 版本信息
- H.$api 前端框架
- addCls
- addEvt
- after
- append
- attr
- before
- byId
- clearStorage
- closest
- contains
- css
- cssVal
- dom
- domAll
- eq
- first
- fixIos7Bar
- fixStatusBar
- get
- getStorage
- hasCls
- html
- isArray
- isElement
- isEmptyObject
- jsonToStr
- last
- next
- not
- offset
- one
- post
- prepend
- remove
- removeCls
- removeAttr
- rmEvt
- rmStorage
- setStorage
- strToJson
- toggleCls
- text
- toast
- trim
- trimAll
- val
- H.$apicloud 常用類庫
- addEventListener
- actionSheet
- ajax
- alert
- bringFrameToFront
- call
- cancelAjax
- cancelDownload
- cancelNotification
- clearCache
- clearStorage
- closeFrameGroup
- closeFrame
- closeSlidPane
- closeToWin
- closeWin
- confirm
- download
- execScript
- getPicture
- getPrefs
- getStorage
- hideProgress
- imageCache
- isIOS
- loadSecureValue
- lockSlidPane
- notification
- offset
- openApp
- openContacts
- openFrame
- openFrameGroup
- openSlidPane
- openSlidLayout
- openVideo
- openWin
- prompt
- readFile
- ready
- removeEventListener
- removeStorage
- removePrefs
- refreshHeaderLoadDone
- refreshHeaderLoading
- require
- returnNewMemoryObj
- scrollToBottom
- saveMediaToAlbum
- setFrameGroupStatus
- setFrameGroupIndex
- sendEvent
- setAppIconBadge
- setFullScreen
- setPrefs
- setScreenOrientation
- setKeepScreenOn
- setFrameAttr
- setFrameGroupAttr
- setFrameStatus
- setRefreshHeaderInfo
- setStorage
- setWinAttr
- startPlay
- startRecord
- stopPlay
- stopRecord
- showProgress
- sms
- toast
- toLauncher
- unlockSlidPane
- writeFile
- H.$com 通用類庫
- extend
- getAgeForBirthDay
- getFileExt
- getNowDateFormat
- isArray
- isDate
- isFunction
- isNullOrEmpty
- isNullOrUndefined
- isNumber
- isObject
- isPlusDecimal
- newGuid
- scrollToDocButton
- transJsTimestamp
- transPHPTimestamp
- trim
- unique
- H.$module 模塊列表對象
- H.$tppl 模板引擎
- H.$tppl_flag
- H.$tppl(tpl,data)
- H.$validate 表單驗證
- 屬性
- data-rule
- data-nullmsg
- data-errmsg
- data-sucmsg
- data-sync
- data-haved
- 規則
- *
- *6-16
- n
- n6-16
- s
- s6-16
- p
- m
- e
- url
- date
- zh
- dword
- money
- ipv4
- ipv6
- num
- idcard
- time
- t
- tm
- video
- flash
- mp3
- doc
- img
- zip
- md5
- ascii
- color
- ens
- enb
- age
- cname
- ename
- pn
- upn
- 方法
- form
- addRule
- 拓展
- 前端推薦
- AUI
- doT.min.js
- ECharts.min.js
- Echo.min.js
- Editor.md
- Hammer.min.js
- Highlight.min.js
- iconfont
- Pace.min.js
- Linq.min.js
- Zepto.min.js
- swiper.min.js
- 常用示例
- 打開新窗口
- 打開窗口組
- 首頁布局:點擊底部打開窗口
- 首頁布局:點擊底部打開窗口組
- 首頁布局:打開側滑
- 首頁布局:底部透明
- 全局背景布局示例
- 安裝啟動畫
- 模塊示例
- 支付模塊
- 登錄、分享
- 視頻點播、直播
- 百度地圖
- 即時通訊
- 本地緩存
- 人臉識別
- 圖片處理、壓縮、裁切
- 語音識別
- 短信驗證
- 在線客服
- 極光推送
- 廣告接入
- 圖靈機器人
- 音樂播放
- 安全驗證
- 文件目錄操作
- 文件下載、斷點、續傳
- 文檔閱讀
- 二維碼掃描
- 文件壓縮
- 圖表統計
- 幻燈片輪播
- 二維碼登錄
- 指紋識別
- 聲紋識別
- 音頻播放
- 藍牙連接
- 圖片選擇
- 復制黏貼
- 圖片美化,裁切,濾鏡處理
- 名片掃描
- 文件下載
- 視頻聊天
- 實時語音
- 高德地圖
- 接口示例
- 獲取天氣
- 完整示例
- 建議收集
- 版本愿景