zoukankan      html  css  js  c++  java
  • 微信小程序学习笔记(四)--框架-视图层

    WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件事件系统,可以构建出页面的结构。

    数据绑定

    使用{{}}绑定数据。

    简单绑定

    <view class='first-container' bindtap='bindTapFunc'>
        FirstName:{{firstName}},lastName:{{lastName}}
      </view>

    组件属性(需要在双引号之内)

    <view id='item-{{id}}' class='first-container' bindtap='bindTapFunc'>
        FirstName:{{firstName}},lastName:{{lastName}}
    </view>

    控制属性(需要在双引号之内)

    <view>
      <view wx:if="{{view==='WEBVIEW'}}">{{view}}</view>
      <view wx:elif="{{view==='APP'}}">{{view}}</view>
      <view wx:if="{{view==='MAC'}}">{{view}}</view>
    </view>

    关键字(需要在双引号之内)

    true:boolean 类型的 true,代表真值。

    false: boolean 类型的 false,代表假值。

    <checkbox checked="{{false}}"> </checkbox>

    特别注意:不要直接写 checked="false",其计算结果是一个字符串,转成 boolean 类型后代表真值。

    运算

    三元运算

    <view hidden="{{flag ? true : false}}"> Hidden </view>

    算数运算

    <view> {{a + b}} + {{c}} + d </view>

    逻辑判断

    <view wx:if="{{length > 5}}"> </view>

    组合

    也可以在 Mustache 内直接进行组合,构成新的对象或者数组。

    参考文档


    列表渲染

    wx:for

    在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。

    默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item

    <!--wxml-->
    <view wx:for="{{array}}"> {{item}} </view>
    // page.js
    Page({
      data: {
        message: 'Hello MINA!'
      }
    })

    这里页面上数据绑定的时候,试着把item换成了随便的字母,页面上就不能正常显示列表了,所以item应该是不可修改的值。

    block wx:for

    <block>不是一个组件,它仅仅是一个包装元素,只接受控制属性,不会在页面中做任何渲染。

    wx:key

    如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

    参考文档


    条件渲染

    wx:if

    在框架中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块;也可以用 wx:elif 和 wx:else 来添加一个 else 块:

    <!--wxml-->
    <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>
    <view wx:elif="{{view == 'APP'}}"> APP </view>
    <view wx:else="{{view == 'MINA'}}"> MINA </view>
    // page.js
    Page({
      data: {
        view: 'MINA'
      }
    })

    block wx:if

    因为 wx:if 是一个控制属性,需要将它添加到一个标签上。如果要一次性判断多个组件标签,可以使用一个 <block/> 标签将多个组件包装起来,并在上边使用 wx:if 控制属性。

    wx:if vs hidden

    参考文档


    模板

    定义模板

    使用 name 属性,作为模板的名字。然后在<template/>内定义代码片段,如:

    <!--wxml-->
    <template name="staffName">
      <view>
        FirstName: {{firstName}}, LastName: {{lastName}}
      </view>
    </template>
    
    <template is="staffName" data="{{...staffA}}"></template>
    <template is="staffName" data="{{...staffB}}"></template>
    <template is="staffName" data="{{...staffC}}"></template>
    // page.js
    Page({
      data: {
        staffA: {firstName: 'Hulk', lastName: 'Hu'},
        staffB: {firstName: 'Shang', lastName: 'You'},
        staffC: {firstName: 'Gideon', lastName: 'Lin'}
      }
    })

    使用模板

    <template>中的is用于确定需要套用哪一个template,data则为在template中展现的数据。

    一个wxml文件里面可以定义多个<template></template>,用name来区分。

    调用时,is取对应的name值即可引用对应的模板。

    is 属性可以使用 Mustache 语法,来动态决定具体需要渲染哪个模板:

    <!--index.wxml-->
    <template name="staffName">
      <view class='first-container'>
        FirstName:{{firstName}},lastName:{{lastName}}
      </view>
    </template>
    <template name="anther">
      <view class='another-container'>
          FirstName:{{firstName}},lastName:{{lastName}}
      </view>
    </template>
    <template is="staffName" data="{{...staffA}}"></template>
    <template is="staffName" data="{{...staffB}}"></template>
    <template is="anther" data="{{...staffC}}"></template>

    效果图:

    模板的作用域

    模板拥有自己的作用域,只能使用 data 传入的数据以及模版定义文件中定义的 <wxs /> 模块。 

  • 相关阅读:
    野路子码农系列(7)近期花里胡哨技巧汇总
    野路子码农系列(6)有关线下验证集选取的思考
    野路子码农(5)Python中的装饰器,可能是最通俗的解说
    野路子码农(4)挖掘机云端部署小试
    野路子码农系列(3)plotly可视化的简单套路
    野路子码农系列(2)Python中的类,可能是最通俗的解说
    野路子码农系列(1) 创建Web API
    pandas技巧两则——列内元素统计和列内元素排序
    Windows环境下Anaconda安装TensorFlow的避坑指南
    让米帝领事馆给你报空气质量(动态网页爬取及简单的数据整理)
  • 原文地址:https://www.cnblogs.com/viola-sh/p/9579769.html
Copyright © 2011-2022 走看看