zoukankan      html  css  js  c++  java
  • 02 小程序语法-数据绑定与事件绑定

    1. 小程序模板语法

           wxml(weixin markup language)是框架设计的一套标记语言,结合基础组件,事件系统,可以构建出页面系统。小程序正式因为拥有模板语法,才能让我们快速的页面渲和动态功能,主要分为 数据绑定   运算  列表渲染  条件渲染

    1.1 数据绑定

          数据绑定分为两个方面进行讲解:数据指的是呈现在页面pages各个页面的数据(在js中data书写),而绑定指的是在何处绑定(在wxm{{数据名词}})进行绑定

    其中:

    类似::

    -------------------------------------

      data: {

        msg:'hello two',   字符串用引号

        num:10000,         数字不用

        isGirl:false,       boolean类型不用

        person:{    此处是新建对象,对象用大括号扩朱

          age:74,          数字不用 

          height:145,  数字不用

          weight:200,  数字不用

          name:"富婆"   字符串用引号

    }

    -----------------------------------------


    例如:我们在pages下面searchtwo文件夹下的searchtwo.js的page{}输入:

    Page({

    /**

       * 页面的初始数据

       */

      data: {

        msg:'hello two'

    },

    })

    从而在wxml中以加括号方式渲染数据

    image

    那么同时界面two显示为 hello two

    image

    <!--pages/searchtwo/searchtwo.wxml-->

    <text>pages/searchtwo/searchtwo.wxml</text>

    其中 text相当于以前web中的span标签,行内元素,不会换行,也就是多个也不换行

          <view></view>相当于web中的div标签块级元素   会换行

          <checkbox> 相当于以前复选框标签  不换行

    补充:

    searchtwo.js中输入:

    Page({

    /**

       * 页面的初始数据

       */

      data: {

        msg:'hello two',

        num:10000,

        isGirl:false,

        person:{    此处是新建对象

          age:74,

          height:145,

          weight:200,

          name:"富婆"

    }

    },

    searchtwo.wxml中输入:

    <!--pages/searchtwo/searchtwo.wxml-->

    字符串

    <view>消息是:{{msg}}</view>

    数字

    <view>数字是:{{num}}</view>

    布尔类型

    <view>是否是伪娘:{{isGirl}}</view>

    对象

    <view>新建对象是:{{person}}</view>   显示为【object  object】

    <view>新建对象是:{{person.name}}</view>

    显示效果如下:

    image

    当然 data数据不仅仅可以当做文本来显示出在页面中,也可以作为标签属性,例如:

    image

    使用布尔值作为标签属性:

    <view>

           <checkbox checked></checkbox> checkbox标签就是复选框    checked默认是选中  不加checked就是不选

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

            <checkbox></checkbox>

    </view>

    image


    1.2运算(表达式 也就是 {{表达式/语句}})  三元运算   算数运算 逻辑判断 字符串运算

           可以理解为在花括号也就是大括号中加入表达式---语句, 比方说

    简单的

    • 数字的运算
    • 字符串拼接
    • 逻辑运算

    复杂的

    • if else
    • switch
    • do while
    • for

    <!--运算 → 表达式理解

    1.表达式  简单的运算,数字运算,拼接  逻辑运算

    2.语句:if else  switch dowhile  for

    -->

    <view>数字运算1:{{1+1}}</view> <!--显示为2-->

    <view>字符串运算-拼接:{{'1'+'1'}}</view> <!--显示为11-->

    <view>三元运算(可替换为变量,三等号恒等于):{{10%2===0?'偶数':'奇数'}}</view>

    1602725078(1)

    1.3 列表渲染

      1.3.1 列表渲染指的是js文件中data中添加list数据,然后wxml文件中添加渲染条件

       比较突出的列表渲染讲的是 wx:for

    项的变量名默认为item wx:for-item 可以指定数组当前元素的变量名

    下标变量名默认为index wx:for-index  可以指定数组当前下标的变量名


    1.3.2.wx:key 用来提高数组渲染的性能,因此wx:key绑定的值有以下两种选择:

    Now you can provide attr `wx:key` for a `wx:for` to improve performance.

    • string 类型,表示循环项中的唯一属性,如:

          list:[ {id:0,name:'炒饭'},{id:1,name:'炒蛋'}]

         wx:key='id'  此处id唯一

    • 保留字*this,它意思是item本身,*this代表的必须是唯一的字符串和数组,仅用于普通数组(没有冒号那种),如下:

          list:[1,2,3,4]

         wx:key='*this'

    案例:

    wxml:

    <view wx:for="{{list}}"

    wx:for-item='item'

    wx:for-index='index'

    wx:key='id'>列表渲染

        索引:{{index}}

        --

        值:{{item.name}}

    </view>

    1602726323(1)1602726315(1)

    1.3.3.当我们使用数组嵌套循环的时候,绑定项名称(就是item/index)重名问题,要考虑

    1.3.4 当我们使用数组无嵌套循环,则 wx:for-item='item' wx:for-index='index'不写也可

    1.3.5 block标签

    block标签代码中是存在的,页面显示中是移除掉的,渲染一个包含多节点的结构块block最终不会变成真正的dom元素

    也就是在编译后,传送的没有block标签,相当于占位符,且数据不会分行显示

    image

    1.4 条件渲染

         条件渲染分为wx:if和wx:hidden两个功能,频繁切换用hidden  不常使用用wx:if


    • 在框架中,使用wx:if=''{{condition}}''来判断是否需要渲染该代码块
    • 在框架中,使用 hidden=“{{condition}}”来判断是否需要渲染该代码块(两种方式)

    <!--

      条件渲染

      1. wx:if='{{true/false}}'

         后期可把里面的值设置为变量,动态显示

    -->

    <view>

    <view>条件渲染</view>

    <view wx:if="{{true}}">显示</view>

    <view wx:if="{{false}}">隐藏</view>

    </view>

    image

    框架中,使用 hidden=“{{condition}}”来判断是否需要渲染该代码块(两种方式)

    a)在标签上直接加入属性 hidden 如   <view hidden>哈哈哈</view>则哈哈哈 不会显示

    b)在标签中直接加属性赋值,true隐藏,false显示<view hidden='{{true}}'>哈哈哈</view>

         总结

    当页面标签不是频繁的切换显示,则优先使用wx:if,反之用hidden

    切换的运行过程:wx:if是直接把标签从页面结构给移除掉,而hidden是通过样式控制显示和隐藏,较为节约系统资源

    其中hidden是通过添加样式来约束切换显示,因为在下面可见其是在display中是none,所以hidden不要和样式一起使用,会被display样式覆盖而显示。而wx:if是直接把标签从页面结构给移除掉

    image

    2.事件绑定

          小程序中绑定事件,通过bind关键字来实现,例如bindtap bindinput  bindchange

    不同的组件来支持不同的事件,具体看组件的说明

    2.1 wxml 

          < input  bindinput='handleInput'>     P18-P19

    1.给input标签绑定input事件

        绑定关键字  bindinput

      2. 如何获取输入框的值  可以通过事件源对象获取即可 也就是e

          e.detail.value

      3. 把输入的值赋值到data当中,不能是this.data.num=e.detail.value

          正确写法:

          this.setData({

            num:e.detail.value

          })

      4.加法与减法的按钮 button设置后,绑定单击事件

         以前使用 bindclick,现在小程序用bindtap即可,也就是不能直接用

         <button bindtap="handletap(1)">+</button>

         只能用  通过自定义属性的方式来传递参数

         然后在  事件源中获取自定义属性即可 

    1602835526(1)

    wxml内容

    <input type="text" bindinput="handleInput" />

    <button bindtap="handletap" data-operation="{{1}}">+</button>

    <button bindtap="handletap" data-operation="{{-1}}">-</button>

    <view>

      {{num}}

    </view>



    JS内容

    /**

       * 页面的初始数据

       */

      data: {

        num:0

    },

    /**

       *输入框的input事件的执行逻辑

       */

    handleInput(e){

    //console.log(e.detail.value)

    this.setData({

          num:e.detail.value

    })

    },

    /**

       * 加减的按钮事件

       */

    handletap(e){

    //console.log(e);

    //1.获取自定义属性operation

    const operation= e.currentTarget.dataset.operation;

    //2.赋值给num,你获取data中的值 要用this.data来获取

    this.setData({

          num:this.data.num+operation

    })

    },





    2.2 page

    page({

       //绑定事件

       handleInput: function(e){

             console.log(e);

             console.log("值被改变了');

         }

    })







  • 相关阅读:
    MongoDB,无模式文档型数据库简介
    数据说话:怎样的程序员最抢手?
    猛醒:也许我们一生追求的都错了!
    中国风电生产监控平台界面
    如何跟着趋势去赚钱
    2015年最好的员工心态培养 -- 我们需要把简单的事情做到极致
    什么是程序员的核心竞争力?
    第一篇 技术选型
    .net core 读取配置文件
    .net core nlog记录日志
  • 原文地址:https://www.cnblogs.com/rango0550/p/13810358.html
Copyright © 2011-2022 走看看