美文网首页
小程序快速入门:wxml的使用

小程序快速入门:wxml的使用

作者: 康小曹 | 来源:发表于2019-07-24 15:12 被阅读0次

    基本语法

    基本语法如下:

    <标签名 属性名1="属性值1" 属性名2="属性值2" ...> 内容/其他wxml</标签名>
    

    几个特点:
    1.严格闭合
    2.属性名和绑定数据大小写敏感
    3.数据绑定必须使用双大括号
    4.属性名除特殊属性外,都使用key= "value",value使用双引号包含

    数据绑定

    什么是数据绑定:WXML 通过 {{变量名}} 来绑定 WXML 文件和对应的 JavaScript 文件中的 data 对象属性。

    数据绑定的作用:动态渲染页面。

    浏览器的web开发中,javascript可以通过调用dom对象来更新页面,比如document对象获取对应id的节点然后增删改对应的节点。但是,通过小程序的架构可以了解到,小程序中没有dom对象,所以通过操作dom来动态渲染,而是通过数据绑定+setData()+内部机制来动态渲染。

    数据绑定的使用场景:
    1、单纯的数据绑定
    2、属性绑定
    3、算数运算
    4、逻辑运算

    注意两点:
    1.变量区分大小写,也就是说time和Time是两个变量;
    2.没有被定义的变量的或者是被设置为 undefined 的变量不会被同步到 wxml 中;
    3.属性需要使用双引号括起来;

    举个栗子:
    js文件:

    // 定义一个本文件中的全局变量
    var shouldRed = false;
    Page({
      data: {
        // text:"这是一个页面"
        color: "window-red",
        msg: "hello world"
      },
    
      //文字点击函数 
      click: function () {
        shouldRed = !shouldRed;
        if(shouldRed) {
          this.setData({color: "window-red" });
        } else {
          this.setData({color: "window" });
        };
      }
    })
    

    wxml文件:

    <view>
        //catchtap=catch+tap=不向下层传递的触摸时间
        <text catchtap="click" class="{{color}}">{{msg}}</text>
        // 变量绑定+逻辑运算
        <text>{{'\nhello' + 'world'}}</text>
        <text>{{'\nhello ' + (1+1)}}\n</text>
        <text>{{1+1}} + {{2*2}} = 6</text>
    </view>
    

    wxss文件:

    // 蓝色文字的样式
    .window {
      color: #4995fa
    }
    
    // 红色文字的样式
    .window-red {
      color: #fa4961
    }
    

    结果:


    数据绑定

    条件语法(if else)

    WXML 中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:

    <view wx:if="{{condition1}}">condition1为ture</view>
    

    使用 wx:elif 和 wx:else 来添加一个 else 块:

    <view wx:if="{{length == 5}}">length为5</view>
    <view wx:elif="{{length == 3}}">length为3</view>
    <view wx:else="{{length == 1}}">length为1</view>
    

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

    <block wx:if="{{condition2 == false}}">
    <view>condition2为false</view>
    <view>condition2为false</view>
    </block>
    

    js文件中:

    Page({
      data: {
        condition1: true,
        length: 3,
        condition2: false,
      }
    })
    

    结果:


    条件语法

    列表渲染(for循环)

    可以使用for循环多次渲染一个组件,也就是创建多个组件。其中,默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item。
    举个例子:
    js:

    Page({
      data: {
        array: [{
          message: 'foo',
        }, {
          message: 'bar'
        }, {
          message: '123'
        }, {
          message: '123'
        }, {
          message: '123'
        },]
      }
    })
    

    wxml:

    <view wx:for="{{array}}">
      {{index}}: {{item.message}}
    </view>
    

    结果:


    列表渲染

    使用 wx:for-item 指定数组当前元素的变量名,使用 wx:for-index 指定数组当前下标的变量名:

    <view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
      {{idx}}: {{itemName.message}}
    </view>
    

    类似 block wx:if ,也可以将 wx:for 用在 <block/> 标签上,以渲染一个包含多节点的结构块。例如:

    <block wx:for="{{['a', 'b', 'c']}}">
      <view> {{index}}: </view>
      <view> {{item}} </view>
    </block>
    

    结果:


    block-for

    列表渲染中key值的使用:

    模板

    WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。使用 name 属性,作为模板的名字。template的定义如下:

    <template name="msgItem">
      <view>
        <text> {{index}}: {{msg}} </text>
        <text> Time: {{time}} </text>
      </view>
    </template>
    

    使用template时,使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入,如下:

    <template name="testTemplate">
      <view>
        <text>template测试\n</text>
        <text>{{index}}:{{msg}}\n</text>
        <text>time:{{time}}</text>
      </view>
    </template>
    
    <view>
      <template is="testTemplate" data="{{index,msg,time}}"></template>
    </view>
    

    js:

    Page({
      data: {
        index: 0,
        msg: 'this is a template',
        time: '2016-06-18'
      }
    })
    

    结果:


    template

    template的动态渲染:

    <template name="single">
      <view> single </view>
    </template>
    
    <template name="double">
      <view> double </view>
    </template>
    
    <block wx:for="{{[1,2,3,4,5]}}">
      <template is="{{item % 2 == 0 ? 'double' : 'single'}}"></template>
    </block>
    

    结果:


    template动态渲染

    引用

    import:import 可以在该文件中使用目标文件定义的 template,但是import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件中 import 的 template,简言之就是 import 不具有递归的特性。
    include:include 可以将目标文件中除了 <template/> <wxs/> 外的整个代码引入,相当于是拷贝到 include 位置

    共同属性

    所有wxml 标签都支持的属性称之为共同属性


    共同属性

    相关文章

      网友评论

          本文标题:小程序快速入门:wxml的使用

          本文链接:https://www.haomeiwen.com/subject/dqnolctx.html