小程序从0到1 | 二、基础语法规则

136 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

视图层 

在视图层遵循 WXML(WeiXin Markup Language) 语法规则

1. 插值语法(数据绑定)

mustache 插值表达式语法,类似于Vue的双向数据绑定,不同的是,小程在动态绑定属性的时候不使用v_bind。

vue中:

<image :src="{{path}}" />
<h1>{{msg}}</h1>

小程序中:

<image src="{{path}}" />
<h1>{{msg}}</h1>

2. 循环和判断

循环出来的每一项由 item 表示

<view wx:for="{{fruit}}"> {{item}} </view>

<view wx:if="{{type == 'A'}}"> A </view>
<view wx:elif="{{type == 'B'}}"> B </view>
<view wx:else="{{type == 'C'}}"> C </view>

data: {
    fruit: ['apple','banana']
    type: 'A'
}

3. 引用其它模板

<import src="A.wxml"/>

注意:import 是有作用域的,只能导入目标文件中定义的 template,如果目标文件中导入了其它的 template ,当前文件是无法使用的,

WXS 语法

1. 定义和修改数据

js文件中的结构与 Vue 的选项式 API 语法类似:

  • properties —— 组件的属性列表
  • data —— 定义组件的初始数据
  • methods —— 组件的方法列表

由于小程序中各个页面之间是相互独立的,所以要在事件处理函数中使用 setData() 才可以修改 data 中数据的值,用[this.data.属性名称] 的形式获取数据的原始值。

setData : 微信小程序提供的一个 API ,用于改变逻辑层中 data 中的数据

Page({
  properties: {
  },
  data: {
    count: 0
  },
  methods: {
    counter() {
      this.setData({
          count: this.data.count + 1
      })
    }
  }
})

数据类型:

image.png

事件

开发者工具中的语法提示可以看到事件的种类非常多:

image.png

除了常见的input 输入事件、change 切换选项事件等,tap触摸事件是我们首先要了解的。

tap 触摸事件

tap 触摸事件类似于我们所熟悉的 click 事件

<button bindtap="onSave">点俺保存</button>

onSave(e){
  console.log(e)
}

打印结果:

image.png

在打印结果中可以看到 event.targetevent.currentTarget 这两项:

当组件涉及到嵌套时,触发事件后,target 表示触发的是源头组件,currentTarget是当前事件绑定的组件,开发中 target 较为常用。

event.detail

事件传参: 在事件传递参数时,data-属性名称的形式绑定

下面的代码中,msg 会被解析成参数名,666会被解析成参数的值

错误方式:

<button bindtap="onSave(666)" >保存</button>

正确方式:

<button bindtap="onSave" data-msg="{{666}}">保存</button>