微信小程序学习七 视图层wxml语法

微信小程序的wxml语法和vue的挺像

数据绑定

wxml

<view> {{message}} </view>

js

Page({
 data:{
    message:"hello mina"
  }
})

列表渲染

<!--wxml-->使用wx:item 指定遍历项得别名,使用wx:index来指定遍历项的索引别名 使用wx:key指定来指定遍历项的标识符,默认得遍历项的别名为item,索引别名为index
<view wx:for="{{array}}"> {{item}}{{index}} </view>

// page.js
Page({
  data: {
    array: [1, 2, 3, 4, 5]
  }
})
  1. key的作用是
  2. 当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。
  3. 如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略

条件渲染

<!--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‘
  }
})

模板

<!--pages/index/index.wxml-->
<view>
//使用模板 使用模板时数据源的名字要和定义时一致
  <template is="first_temp" data="{{msg}}"></template>
</view>
//定义模板 定义模板时使用的时msg
<template name="first_temp">
   <view>
     {{msg}}
   </view>
</template>

模板的数据值不由page中的data项决定而是由使用模板标签的data属性决定,并且再使用模板时添加的数据源必须和模板定义时的数据名一致

多个数据可以由{{data1,data2,data3}}的形式给过来

也可以由解构的方式传递

<!--pages/index/index.wxml-->
<view>
//使用模板  datas={a:"a",b:"b"}
  <template is="first_temp" data="{{...datas,msg}}"></template>
</view>
//定义模板
<template name="first_temp">
   <view>
     {{msg}}
   </view>
   <view>
     {{a}}
   </view>
  <view>
     {{b}}
   </view>
</template>

如果使用单独的文件创建template,择需要在使用模板的的地方引入,才能使用

新建一个文件夹temp0,下面放入temp0.wxml temp0.wxss,模板文件只需要建立两个文件即可,其余的js,json没有用

temp0

temp.wxml

<template name="temp">
 <view>
   {{index}}
</view>
</template>

使用模板的idnex.wxml

<import src="../../template/temp0/temp.wxml"/>//引入模板
<view>
//使用模板 is="定义时模板的name"
 <template is="temp" data="{{index}}" wx:for="{{[1,2,3,4,5,6]}}" wx:key="{{index}}"/>
</view>

然后再再index.wxss中将temp0.wxss引入,也可以全局引入temp.wxss其目的就是能够使temp0.wxss样式生效

index.wxss

view{
  color: red;
}

请注意import引入模板存在作用域,假定有三个模板a、b、c,再a中import了b,再b中import了c,那么在a中只能使用

<import src="b"/>
<template is="b"/>//是可以的
<template is="c"/>//是不行的,import只会引入b,要使用c必须import c

个人还是比较推荐使用组件而非模板

值得一提的是

在小程序中还有另一种include引入方式,这种引入方式相当将代码于copy至指定的位置,但是被template和wxs标签所包裹的代码并不会拷贝

原文地址:https://www.cnblogs.com/wrhbk/p/12103496.html

时间: 2024-10-09 04:31:10

微信小程序学习七 视图层wxml语法的相关文章

微信小程序学习Course 2 事件

微信小程序学习Course 2 事件 事件是用来打通逻辑层与视图层的枢纽,我们一般在视图层(WXML文件)对某个控件绑定事件函数,在逻辑层(JS文件)编写事件函数代码. 2.1 事件类型 小程序中有两类事件 1.冒泡事件:当一个组件的事件被触发时,该事件会向父节点传递数据. 2.非冒泡事件:当一个组件上的事件被触发时,该事件不会向父节点传输数据. 2.2 事件绑定 事件的绑定比较简单,在视图层中增加类似如下代码,事件通常有两种开头,一种时bind以他开头代表普通模式:另一种是catch开头,他会

微信小程序学习Course 7 定时器功能

微信小程序学习Course 7 定时器功能 微信小程序中有一个定时器API函数,其提供了四个API接口 7.1.number setTimeout(function callback, number delay, any rest) 设定一个定时器,在定时到期以后执行注册的回调函数,值得注意的是本函数只执行一次!!!! setTimeout(this.DaoJiShi, 1000);//时间到达一秒执行一次DaoJiShi函数 如果我们想实现一个不停调用的函数,怎末实现呢?以下函数利用递归实现了

微信小程序学习Course 4-2 JS数组对象学习

微信小程序学习Course 3-2 JS数组对象学习 本节主要介绍JS中的数组. 3-2.1 数组的声明 数组声明的方式多种,如下例.一般我们可以先创建一个空数组,然后再填充. var names = [];//创建一个空数组 var names = ["sadad","asdsad"];//创建一个包含两个字符串的数组 var names = new Array(3);//创建一个包含三个元素的数组 3-2.2 数组的增添 数组有多种增添方式,一种是栈方式,另一种

微信小程序学习Course 9 云开发功能

微信小程序学习Course 9 云开发功能 微信小程序提供了一套免费的云开发功能API函数,虽然容量小,但足够我们个人用户使用以及学习了.下面简单介绍一下. 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥. 目前提供三大基础能力支持: 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码 数据库:一个既可在小程序前端操作,也能

微信小程序学习指南

作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 微信小程序正式公测, 张小龙全面阐述小程序,定档1月9日上线(附90分钟演讲全文) ... 前言:新人第一坑,跳坑指南:修改后,必须保存:ctrl+S: 1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教

微信小程序学习 动手撸一个校园网小程序

动手撸一个校园网微信小程序 高考完毕,想必广大学子和家长们都在忙着查询各所高校的信息,刚好上手微信小程序,当练手也当为自己的学校做点宣传,便当即撸了一个校园网微信小程序. 效果预览 源码地址:Github??求你的小星星- 准备工作 微信小程序开发者工具:腾讯开放了小程序个人开发平台,只需要一个微信号就可以成为小程序开发者了. 微信小程序设计指南:由于小程序是一个平台,所以平台上的开发者必须要遵守规范. ?easy-mock:使用easy-mock模拟后端数据,后面会简单介绍配置. 七牛云:使用

微信小程序学习

以下内容均转自微信平台,为学习所用. 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志. 1. 获取微信小程序的 AppID 登录 https://mp.weixin.qq.com ,就可以在网站的"设置"-"开发者设置"中,查看到微信小程序的 AppID 了,注意不可直接使用服务号或订阅号的 AppID . 注意:如果要以非管理

微信小程序学习笔记--20170425--登录验证实现

初探微信小程序已经有几天的时间,跟随极客学院某某老师(只关注技术未关注老师,还请谅解).从微信小程序的框架结构及相关内容.下面以登录验证功能模块,展示近期学习的内容. 需求描述: 对于部分页面添加登录验证,用户未登录的情况下,进入页面,页面自动转向登录页面.登录验证成功后,回调到登录发起页面. 实现思路: 创建全局变量用于存储当前登录用户对象(userInfo).全局方法用于验证登录有效性(checkLoginInfo()).全局方法用于获取当前页面的全路径(getCurrentUrl()).

微信小程序学习笔记(阶段一)

一阶段学习过程: (一)看官方文档的简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ (二)看小码哥视频:https://chuanke.baidu.com/v2040981-197486-1133724.html (三)模仿并写出一个计算器小程序demo 项目结构: pages:存储这各个页面的文件夹 pages内的文件夹(初始有index.logs):分别存储这每个页面,其中一般包含三种文件,*.js.*wxml.*wxss utils:里面装有