小程序学习之小程序框架--视图层

1.wxml

1)数据绑定

  • 简单绑定       {{变量名}}形式
  • 组件属性绑定     eg:<view id='{{id}}'>hello</view>
  • 控制属性绑定      eg:<view wx:if='{{condition}}'></view>
  • 关键字绑定     在引号内写布尔值也必须用双花括号括起来 否则会被认为是字符串转换为布尔值以后表示true
  • 运算绑定        花括号内可以进行简单运算,支持三元运算、算术运算、逻辑判断、字符串运算、数据路径运算
  • 组合绑定        在双花括号内直接进行变量和值的组合,构成新的对象或数组

ps:也可以使用"..."符号将对象内容展开显示

<!--wxml页面代码-->
<template is="test" data="{{...student,gender:2}}"></tenplate>

//JS代码
Page({
  data:{
    student: {
      stuID: '123',
      stuName: '张三'
     }
  }
})

//结果:stuID:'123',stuName:'张三',gender:2

元素key和value名称相同时,可以省略表达。存在相同key名称,后者会覆盖前者内容。如下:

2)列表渲染

  • 简单列表    使用wx:for绑定一个数组,用数据中的每个元素依次渲染该组件,形成批量效果
  • 嵌套列表     wx:for嵌套出现,如九九乘法口诀表的例子
  • 多节点列表   将wx:for用在<block>标签上以渲染一个包含多节点的结构块
  • wx:key属性   如果列表中项目位置会动态改变或者有新项目添加到列表中,可能导致列表乱序,可用此属性指定列表中的项目唯一标识符。两种形式提供:

ps:当数据改变导致页面被重新渲染时会自动校正带有key的组件,以确保项目被正确排序,并且提高列表渲染时的效率

3)条件渲染

  • 简单条件    wx:if="{{condition}}"判断是否需要渲染该代码块
  • 多节点条件  一次性判断多个组件标签,可用<block>标签将多个组件包装起来
  • wx:if与hidden  属性对比如下

ps:如果需要频繁切换组件,用hidden更好;如果运行时条件很少改变,用wx:if更好

4)模板(template)

定义代码片段,后在不同页面被重复调用

  • 定义模板
<template name="myTemp">
 <view>
    <text>Name:{{name}}</text>
    <text>Age:{{age}}</text>
 </view>
</template>
  • 使用模板

在新的wxml页面继续使用template标签可引用模板内容,引用的时候必须带有is属性,用来指定正确的模板名称才能成功引用,使用data属性将模板所需要的数据值引入。

<!--wxml-->
<template is="myTemp" data="{{...student}}"></template>

//JS文件代码
Page({
    data:{
      student:{
        name:'张三',
        age: 20
      }
   }
})

5)事件

从视图层到逻辑层的通信方式

  • 事件的使用方式 

在wxml页面为组件绑定一个事件处理函数,data-*为事件附加属性,想获得data-my数据值,可描述成e.currentTarget.dataset.my

  • 事件的分类  分为冒泡事件(当一个组件上的事件被触发后,该事件会向父节点传递)和非冒泡事件(当一个组件上的事件被触发后,该事件不会向父节点传递)

ps:除上表之外的其他组件自定义事件,无特殊声明都是非冒泡事件

  • 事件绑定和冒泡

key=value形式绑定,key:以bind或catch开头,后跟事件的类型;value:一个字符串,在对应Page中定义同名函数

bind事件和catch事件区别:bind事件绑定不会阻止冒泡事件向上冒泡,后者会

  • 事件的捕获阶段

基本库版本1.5.0起,触摸类事件支持捕获阶段,可在组件的冒泡事件被触发前进行事件捕获,使其无法冒泡。捕获阶段事件顺序是由外向内,与冒泡阶段完全相反。

示例:

  • 事件对象详解

事件对象分为基础事件、自定义事件、触摸事件。事件对象所包含的具体属性如表:

target和currentTarget属性的参数:

dataset属性注意点:

1.如果描述多个词用连字符连接,会被强制转换为驼峰标记法,即第一个单词全部小写,后面每个单词仅首字母大写

2.如果同一个词里有大写字母,会被强制转换为小写字母

6)引用  import和include

  • import   用于引用模板<template>内容

有作用域概念,只引用目标文件自己定义的template,不会引用目标文件里面用<import>引用的第三方模板,为了避免多个页面互相连接引用陷入逻辑错误

  • include

将目标文件除<template>以外的整个代码代入,相当于把目标文件的代码直接复制到<include>标签的位置

<import>适合于统一样式但内容需要动态变化的情况,<include>适合于无需改动目标文件的情况

2.wxss

1)尺寸单位  rpx 根据屏幕宽度进行自适应,无视设备原先尺寸,统一规定屏幕宽度为750rpx 常用ipone6做设计稿标准

2)样式导入  用@import "相对路径";语句导入外联样式表

3)常用属性  略

4)内联样式 style 行内样式 class 指定样式规则

5)选择器

6)全局样式与局部样式

全局样式:app.wxss

局部样式:页面wxss文件

3.组件

后面再详写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值