WXML(weixin markup language)是
框架設計的一套標簽語言瓦哎,結(jié)合基礎組件割岛,事件系統(tǒng),
可以構(gòu)建出頁面的結(jié)構(gòu)
一 數(shù)據(jù)綁定
wxml中的動態(tài)數(shù)據(jù)均來自對應的page中的data
1 簡單綁定
數(shù)據(jù)綁定使用mustache語法(雙大括號)將變量包起,可以作用于:
(1)內(nèi)容
(2)組件屬性(需要在雙括號中)
(3)控制屬性(需要在雙括號中)
(4)關鍵字(需要在雙引號之內(nèi))
2 運算
可以在{{}}中進行簡單的運算倒槐,支持下面的幾種方式:
(1)三元運算
(2)算數(shù)運算
(3)邏輯判斷
(4)字符串運算
(5)數(shù)據(jù)路徑運算
3 組合
可以在mustache內(nèi)直接進行組合魄宏,構(gòu)成新的對象或者數(shù)組
(1)數(shù)組
(2)對象
二 列表渲染
1 wx:for
在組件上使用wx:for控制屬性綁定一個數(shù)組,
可以使用數(shù)組中的各項數(shù)據(jù)重復渲染該組件
默認數(shù)組的當前項的下標變量名是index,
數(shù)組當前項的變量名默認為item
使用wx:for-item可以指定數(shù)組當前元素的變量名
使用wx: for-index可以指定數(shù)組當前下標的變量名
wx:for也可以嵌套,
2 block wx:for
類似block wx:if,
可以將wx:for用在<block/>標簽上碗殷,
渲染一個包含多個節(jié)點的結(jié)構(gòu)塊
3 wx: key
如果列表中項目的位置會動態(tài)改變或者有新的項目添加到列表中仿粹,
并且希望列表中的項目保持自己的特征和狀態(tài)
(如 <input/> 中的輸入內(nèi)容堕仔,<switch/>的選中狀態(tài))
需要使用wx:key指定列表中項目的唯一標識符
wx:key的值有兩種形式提供:
(1)字符串,代表在
for循環(huán)的array中item的某個property,
該property的值需要時列表中唯一的字符串或者數(shù)字灾馒,
不能動態(tài)改變
(2)保留關鍵字,*this代表在for循環(huán)中item本身,
表示需要item本身是一個唯一的字符串或者數(shù)字董饰,
如:當數(shù)據(jù)改變觸發(fā)渲染層重新渲染的時候娄帖,
會校正帶有key的組件诈嘿,框架會確保他們被重新排序,
而不是重新創(chuàng)建昔字,確保使組件保持自身的狀態(tài)
并且提高列表渲染時候的效率
注意:如果不提供wx:ley,會報warning
如果明確知道該列表是靜態(tài)谆扎,或者不必關注其順序状土,可以選擇忽略
三 條件渲染
1 wx:if
在框架中舵揭,用wx:if=“{{condition}}”來判斷是否需要渲染該代碼塊
可以使用wx:elif 和 wx:else 添加一個else塊
2 block wx:if
wx:if是一個控制屬性蜡坊,需要將其添加到一個標簽上僵刮,
如果想一次性判斷多個組件標簽,可以使用<block/>標簽將多個組件包裝起來,使用wx:if控制屬性
注意:<block/>不是一個組件膏燕,僅僅是一個包裝元素近忙,
不會在頁面中做任何渲染,只接受控制屬性
wx:if 和hidden的比較
因為wx:if之中的模板可能包含數(shù)據(jù)綁定,
當wx:if的條件值切換的時候,框架有一個局部渲染的過程,
它會確保條件塊在切換時候銷毀和重新渲染
同時实撒,wx:if也是惰性的
如果初始渲染條件是false负敏,框架什么也不做赁还,
在條件第一次變成真,才開始局部渲染
hidden簡單却汉,組件始終會被渲染翩伪,只是簡單的控制顯示和隱藏
wx:if有更高的切換消耗
hidden有更高的初始渲染消耗黎茎,
如果需要頻繁切換情景嗅骄,用hidden
如果在運行時條件不大可能改變窑眯,wx:if較好
四 模板
wxml提供模板渣聚,可以在模板中定義代碼片段瓶堕,然后在不同地方調(diào)用
1 定義模板
使用name屬性,作為模板的名字,然后在
<template/>定義代碼片段,
2 使用模板
使用is屬性爆办,聲明需要使用的模板,然后將模板所需的data傳入
is屬性可以使用mustache語法步势,來動態(tài)決定具體需要渲染哪個模板
3 模板的作用域
模板擁有自己的作用域,只能使用data傳入數(shù)據(jù)