作者:傾聽歲月,來自原文地址
模版是什么?
就是我們預先寫好一段代碼,供給重復使用。
實例
/page/common/common.wxml
-
<template name="demo1">
-
<view>我是模版demo1</view>
-
</template>
-
/page/index/index.wxml
-
-
<import src="../common/common.wxml" />
-
<view>
-
<template is="demo1" />
-
</view>
我們就成功的將模版demo1 導入進來了。
模版中添加數據 以common.wxml為例子
-
<template name="demo1">
-
<view>{{userInfo.nickName}}</view>
-
<view wx:for="data" wx:for-index="index" wx:for-item="item">
-
{{index}}=>{{item}}
-
</view>
-
</template>
這個模版里面有需要數據對象支持,是直接引用的page({data:{}})這個中的data 嗎? 其實不是的。怎么用呢 以index.wxml為例 假設注冊中的data為
-
var initJson = {
-
data:{
-
userInfo:{"nickname":"我是勇哥"},
-
dataInfos : {
-
"name":"勇哥",
-
"age" :"22"
-
}
-
}
-
}
-
Page(initJson);
-
<import src="../common/common.wxml" />
-
<view>
-
<!--方法一,自己領悟。其中的userInfo引用的是注冊表中data.userInfo-->
-
<template is="demo1" data="{{userInfo,data:dataInfos }}" />
-
<!--方法二。 -->
-
<template is="demo1" data="{{userInfo:{"nickname":"aaaa"},data:[1,2,3,4,5,6,7]}}" />
-
</view>
模版也支持wxml模版語法,也就是說也可以在里面添加wx:if wx:elseif 等語句。 用好了,減少代碼量。降低維護難度。以及提升開發效率。 可以將一個個模版看成一個個封裝好的函數,需要的時候直接導入模版文件,直接調用就好了,當然有參數需要的模版還是要將數據對象傳入進去的。
import 模式導入的文件只能識別template 標簽標記的代碼塊 還有一個include 模式導入的文件就恰恰和import 的模式對應了。
include模式導入的文件
/page/demo2/demo2.wxml
-
<view>
-
include 模式導入文件
-
</view>
-
<template name="demo2_tmp">
-
<view>
-
我是template2
-
</view>
-
</template>
/page/demo1/demo1.wxml
-
<include src="../demo1/demo1.xml" />
-
-
<template is="demo2_tmp" />
運行看看效果吧,你會發現這個運行不了而報錯,提示你未定義,那是因為include模式導入的文件只導入非template模版標簽的組件。其它的不導入。
小注意:<import src="" /> 導入的文件也包含<import src="" /> 不會進行二次導入的。 也就是 如果A導入B(import),B需要導入C(import),那么A只會導入B,而不會導入C。
|