微信小程序开发学习笔记[3]

微信小程序开发学习笔记[3]


目录

微信小程序开发学习笔记[3]

一、视图

二、数据绑定

三、wx:if and wx:for

3.1 wx:if

3.2 wx:for


一、视图

  • 框架的视图层由WXML与WXSS编写,由组件来进行展示。

  • 将逻辑层的数据反应成视图,同时将视图层的事件发送给逻辑层。

  • WXSS(WeiXin Style Sheet)描述页面的样式。

  • 组件(Component)是视图的基本组成单元

    扫描二维码关注公众号,回复: 9714699 查看本文章
  •  

二、数据绑定

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:elifwx: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>


六、理解事件的分类与绑定

  1. 事件是视图层到逻辑层的通讯方式
  2. 事件可以将用户的行为反馈到逻辑层进行处理
  3. 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
  4. 事件对象可以携带额外信息,如id,dataset,touches


 

发布了30 篇原创文章 · 获赞 58 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/annjeff/article/details/86001904