微信小程式開發學習筆記[3]
微信小程式開發學習筆記[3]
目錄
一、檢視
-
框架的檢視層由WXML與WXSS編寫,由元件來進行展示。
-
將邏輯層的資料反應成檢視,同時將檢視層的事件傳送給邏輯層。
-
WXSS(WeiXin Style Sheet)描述頁面的樣式。
-
元件(Component)是檢視的基本組成單元
-
二、資料繫結
WXML中的動態資料均來自對應Page的 JS頁面中的data域中定義的資料。
資料繫結使用Mustache 語法(雙大括號)將變數包起來,可以作用於:內容、元件屬性[需要在雙引號之內]、控制屬性[需要在雙引號之內]。
資料繫結作用於內容:
// pages/binddate/binddate.js
Page({
/**
* 頁面的初始資料
*/
data: {
username:"annjeff"
}
})
<!--pages/binddate/binddate.wxml-->
<text>username:{{username}}</text>
資料繫結作用於元件屬性[需要在雙引號之內]
// pages/binddate/binddate.js
Page({
data: {
username:"annjeff",
id:1
}
})
/* pages/binddate/binddate.wxss */
#item1{
width:250rpx;
height: 100rpx;
background-color: #2907F3
}
<!--pages/binddate/binddate.wxml-->
<view id="item{{id}}">演示1</view>
<view id="item1">演示2</view>
資料繫結作用於控制屬性[需要在雙引號之內]
// pages/binddate/binddate.js
Page({
data: {
username:"annjeff",
id:1,
condition:true
}})
<!--pages/binddate/binddate.wxml-->
<!--當條件為false時,該標籤內內容會被隱藏-->
<view wx:if="{{condition}}">邏輯控制判斷</view>
演示從物件以及物件陣列中取資料:
// pages/binddate/binddate.js
Page({
data: {
employee:{
name:"Tom",
dept:"IT"
},
employees:[{
name:"Tom",
dept:"IT"
},{
name:"Ann",
dept:"sale"
}
]
}})
<!--演示從物件中取資料-->
<view>name:{{employee.name}}</view>
<view>dept:{{employee.dept}}</view>
<!--演示從物件陣列中取資料-->
<view>name1:{{employees[0].name}}</view>
<view>dept:{{employees[0].dept}}</view>
三、wx:if and wx:for
3.1 wx:if
在框架中,使用wx:if="{{condition}}"來判斷是否需要渲染該程式碼塊,當condition為true時程式碼才會被渲染。
/ pages/binddate/binddate.js
Page({
data: {
condition:true}})
<!--演示條件程式碼渲染-->
<view wx:if"{{condition}}""></view>
也可以用wx:elif和wx:else 來新增一個else塊。
// pages/binddate/binddate.js
Page({
data: {
grade:75}})
<!--演示wx:if wx:else wx:elif-->
<view wx:if="{{grade>60}}">及格</view>
<view wx:elif="{{60>grade>45}}">有補考機會</view>
<view wx:else>下年再來一年</view>
如果要一次性判斷多個元件標籤,可以使用一個<block/>標籤將多個元件包裝起來,並在上邊使用wx:if 控制屬性。
<!--一次性判斷多個元件標籤-->
<block wx:if="{{condition}}">
<view>第一行</view>
<view>第二行</view>
</block>
3.2 wx:for
在元件上使用wx:for控制屬性繫結一個陣列,即可使用陣列中各項的資料重複渲染該元件。
預設陣列的當前項的下標變數名預設為index,陣列當前項的變數名預設為item。
/ pages/wxfor/wxfor.js
Page({
data: {
employees:[{
name:"Lily",
age:18
},{
name:"Kate",
age:22
},{
name:"annjeff",
age:24
}]
}})
<!--pages/wxfor/wxfor.wxml-->
<view>
<view>wx:for的使用</view>
<!--第一種方式-->
<view wx:for="{{employees}}">
{{index}}.{{item.name}} ==>{{item.age}}
</view>
----------------------------------------
<!--第二種方式-->
<view wx:for="{{employees}}" wx:for-index="idx" wx:for-item="opt">
{{idx}}.{{opt.name}}==>{{opt.age}}
</view>
-------------------------------------------
<!--演示block-for-->
<block wx:for="{{employees}}">
<view>{{index}}.{{item.name}}</view>
<view>{{index}}.{{item.age}}</view>
</block>
</view>
四、頁面模板
WXML提供模板(template),可以在模板中定義程式碼片段,然後在不同的地方呼叫
定義模版:使用name屬性,作為模板的名字。然後在<template/>內定義程式碼片段,如:
定義模板:
<!--pages/template/head/head.wxml-->
<template name="head">
<view>
<view>{{title}}</view>
<view>{{desc}}</view>
</view>
</template>
使用模板方式一:
<!--pages/template/test/test.wxml-->
<import src="../head/head"/>
<template is="head" data="{{title:'aa',desc:'bb'}}"/>
使用模板方式二:
/ pages/template/test/test.js
Page({
/**
* 頁面的初始資料
*/
data: {
page:{
title:"test頁面",
desc:"這是用來測試的頁面"
}
}})
<!--pages/template/test/test.wxml-->
<import src="../head/head"/>
<template is="head" data="{{title:page.title,desc:page.desc}}"/>
模板使用方式3:
...代表展開這個物件
<!--引用方式2-->
<template is="head" data="{{...page}}"/>
五、import與include兩種引用
WXML 提供兩種檔案引用方式import和include。
5.1、import
import可以在該檔案中使用目標檔案定義的template
在item.wxml中定義了一個叫item的template。
<template name="item">
<view>
<view>{{text}}</view>
</view>
</template>
在index.wxml中引用item.xml,就可以使用item模板
<import src="item.wxml"/>
<template is="item" data="{{text:'farBar'}}"/>
5.2、include
include 可以將目標檔案除了<template/><wxs/>外的整個程式碼引入,相當於是拷貝到include 位置。拷貝過來的是除了模板以外的頁面資料。
<!--pages/template/head/head.wxml-->
<template name="head">
<view>
<view>{{title}}</view>
<view>{{desc}}</view>
</view>
</template>
<view>頁面其他內容</view>
<!--include方式-->
<include src="../head/head"/>
<view>body</view>
六、理解事件的分類與繫結
- 事件是檢視層到邏輯層的通訊方式
- 事件可以將使用者的行為反饋到邏輯層進行處理
- 事件可以繫結在元件上,當達到觸發事件,就會執行邏輯層中對應的事件處理函式。
- 事件物件可以攜帶額外資訊,如id,dataset,touches
相關文章
- 微信小程式開發學習筆記[4]微信小程式筆記
- 微信小程式開發學習筆記[2]微信小程式筆記
- 微信小程式學習筆記微信小程式筆記
- 微信小程式入門學習筆記微信小程式筆記
- 微信小程式學習:雲開發微信小程式
- mpvue開發微信小程式踩坑筆記Vue微信小程式筆記
- 微信小程式--學習筆記(思維導圖)微信小程式筆記
- 微信小程式開發小記微信小程式
- 微信小程式開發筆記(2017.07.27)微信小程式筆記
- 小程式開發筆記筆記
- R/3 ABAP開發學習筆記(轉)筆記
- 原生微信小程式開發記錄微信小程式
- 微信小程式學習微信小程式
- 快速學會開發微信小程式微信小程式
- 微信小程式開發教程(第3彈)微信小程式
- 關於uni-app微信小程式開發的部分筆記APP微信小程式筆記
- 微信小程式開發教程-從零開始(3)微信小程式
- 微信小程式「學科排名」開發心得微信小程式
- 微信小程式Renard學習微信小程式
- 微信小程式開發微信小程式
- 小程式學習筆記(未完待續)筆記
- 微信小程式開發記錄_03_開發指南_小程式程式碼組成微信小程式
- 現學現賣微信小程式開發(一)微信小程式
- 現學現賣微信小程式開發(二)微信小程式
- 微信小程式學習網站微信小程式學習網站
- 【小程式】微信小程式開發實踐微信小程式
- 【小程式】微信小程式開發準備微信小程式
- 微信小程式開發記錄_01程式碼構成微信小程式
- 微信小程式開發教程微信小程式
- 微信小程式開發2微信小程式
- 微信開發與小程式
- 快速開發微信小程式微信小程式
- Rest API 開發 學習筆記RESTAPI筆記
- Android 開發學習筆記Android筆記
- 小程式學習筆記(6)-菜譜小程式的製作筆記
- 開發筆記:使用 mpvue 開發鬥圖小程式筆記Vue
- 填寫設定小程式資訊-微信小程式開發-視訊教程3微信小程式
- 微信小程式+java後端整合筆記微信小程式Java後端筆記