【0基础学习微信小程序】5.视图层(一)

本文为菜鸟窝编辑吴佳林的连载。

无论是APP还是前端,页面的重要性都是不言而喻,微信小程序也是如此。下次本章内容就主要介绍一下微信小程序的页面,也叫视图层。微信小程序的视图层由 WXML 与 WXSS 编写,由组件来进行展示。本章主要讲WXML

视图层

WXML,全称是 WeiXin Markup language ,用于描述页面的结构,跟 HTML 作用是一样的,但是比 HTML 强大一点,WXML 具有模板特性。WXML 的能力主要有有数据绑定,条件渲染,列表渲染,模板,事件,引用。

数据绑定
WXML 中的动态数据均来自对应 Page 的 data (关于 Page 函数可以参考之前一篇文章 模块化与page函数)。WXML 对数据绑定主要用 {{}} 将变量包起来,作用范围有:内容,组件属性,控制属性,关键字,运算,组合,看起来好像蛮多的,其实都是一通则百通,只要了解一个就可以扩展其它了。

  • 内容

    在 js 文件的 page 函数的 data 对象里面定义相关属性,然后再 WXML 的内容里面使用 {{}} 引用皆可到它的内容。

    <view> {{ name }} </view>
    
    Page({
      data: {
        name: 'wujialin'
      }
    })
    
    
  • 组件属性

    在 WXML 里面如果组件的属性,比如id (组件的唯一标示) ,hidden (组件是否显示) ,class (组件的样式类)......需要使用到 data 里面的数据,使用 {{}} 就可以直接使用。

    <view hidden="{{isShowName}}">
     {{name}}
    </view>
    
    
    
    Page({
      data: {
        name:'wujialin',
        isShowName:false
      }
    })
    
    
  • 控制属性

    不仅作用于组件属性,同样作用于控制属性,比如 wx:if , wx:elif (这个控制属性属于条件渲染里面,下面会讲到这个点。)

    <view wx:if="{{isShowName}}">{{name}}</view>
    <view wx:elif="{{isShowSex}}">{{sex}}</view>
    <view wx:else>没有用户信息</view>
    
    
    Page({
      data: {
        name:'wujialin',
        sex:'男',
        isShowName:false,
        isShowSex:true
      }
    })
    
    
  • 关键字

    在 WXML 里面如果要使用关键字,比如 true,false,需要使用 {{}} 将关键字进行包含使用 hidden="{{true}}" 不能在属性里面直接使用这个关键字 hidden="true" 否则只会被当作字符串。

  • 运算

    可以在 {{}} 内进行简单的运算,支持的运算有三元运算,算数运算,逻辑判断,字符串运算,数据路径运算

    • 三元运算

    <view hidden="{{isShowName?true:false}}">{{name}}</view>

    • 算数运算
    <view> {{a + b}} + {{c}} + d </view>
    
    
    Page({
      data: {
        a: 1,
        b: 2,
        c: 3
      }
    })
    
    
    • 逻辑运算
    <view wx:if=="{{age>18}}">成年了</view>
    
    
    Page({
      data: {
        age:19
      }
    })  
    
    
    • 字符串运算
    <view>{{"name" + sex}}</view>
    
    
    • 数据路径运算
    <view>{{object.key}} {{array[0]}}</view>
    
    Page({
      data: {
        object: {
          key: 'Hello '
        },
        array: ['MINA']
      }
    })
    
  • 组合
    也可以在 {{}} 内直接进行组合,构成新的对象或者数组。

  • 数组

    可以在数组中直接引用 data 里面数据,只需要使用 {{}} 将数组进行包含即可。

    <view wx:for="{{[zero, 1, 2, 3, 4]}}"> {{item}} </view>
    
    Page({
      data: {
        zero: 0
      }
    })
    
    
  • 对象

    在模板里面可以使用 {{}} 来构建一个对象。在下面举个简单的例子,具体关于模板的使用会在之后的文章会详细阐述。

   <template name="userInfo" >
   <view>性别:{{sex}}</view>
   <view>姓名:{{name}}</view>
   </template>

   <template is="userInfo" data="{{...item}}"></template>

条件渲染

条件渲染,也就是根据 if...elif...else 表达式的判断条件相关的组件是否需要渲染。你可以单独使用 wx:if="{{condition}}",也可以配合 wx:elifwx:else 进行使用。

    <view wx:if="{{age > 25}}"> 中年人 </view>
    <view wx:elif="{{age > 18}}"> 青少年 </view>
    <view wx:else> 儿童 </view>

    Page({
      data: {
        age: 19
      }
    })

当然这个条件渲染作用于 block 效果也是一样的,block 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

<block wx:if="{{true}}">
  <view> view1 </view>
  <view> view2 </view>
</block>

140套Android优秀开源项目源码,领取地址:http://mp.weixin.qq.com/s/afPGHqfdiApALZqHsXbw-A

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容