微信小程序开发极简入门(二):样式,页面,数据

createh52周前 (04-21)技术教程13

前文:

微信小程序开发极简入门(一)

样式

wxss:

/**放在页面的wxss**/
.scrollarea {
  flex: 1;
  overflow-y: hidden;
}
.idx_view {
  height: 200rpx;
  background-color: burlywood;
  margin: 20rpx 20rpx 20rpx 20rpx;
}
/**放在app.wxss**/
view {
  background-color: cadetblue;
}
view text{
  color: red;
}

样式没什么好讲的,就是css。

放在app.wxss就是全局样式。

.样式名:只有用class引用才生效。例如.idx_view{...},只有class="idx_view"才起作用。

组件名:直接起作用。例如 view{...},所有view组件都是这个样式。

组件的style属性会覆盖样式。

wxml:

<navigation-bar title="首页" back="{{false}}"></navigation-bar>
<scroll-view class="scroll-view" scroll-y type="list">
  <view>
    <label>页面名称:</label><text style="color: orangered;">看字体颜色</text>
  </view>
</scroll-view>

页面展示JS的Data

wxml:

<!--index.wxml-->
<navigation-bar title="首页" back="{{false}}"></navigation-bar>
<scroll-view class="scroll-view" scroll-y type="list">
  <view class="idx_view">
    <label>页面名称:</label><text style="color: orangered;">{{idxName}}</text>
  </view>
</scroll-view>

js:

Page({
  data: {
    idxName: "首页"
  }
})

注意:如果wxml组件的属性是boolean,例如checked="true",合法。但假值必须写成checked="{{false}}"。


页面修改JS的Data

<navigation-bar title="首页" back="{{false}}"></navigation-bar>
<scroll-view class="scrollarea" scroll-y type="list">
  <label>页面名称:</label><text >{{idxName}}</text>
  <button bind:tap="showMPName" type="primary" >展示小程序名称</button>
</scroll-view>


Page({
  showMPName() {
    const app = getApp();
    wx.showToast({
      title: app.globalData.mpName,
    })
    this.setData({
      idxName: app.globalData.mpName
    })
  },
  data: {
    idxName: "首页"
  }
})

改数据,并且页面同步改,只能通过this.setData({key:value})的方式。

this.data.key=value不行。


双向绑定

前面说的是单向绑定(数据可以影响页面),有时候我们还需要页面的更新能影响到数据&页面。例如:

input输入的内容展示在某个view中,同意协议的多选框勾选后,提交按钮变可用等。

做法有如下:

inputVal(e) {
    console.log(e)
    this.setData({
      bindVal: e.detail.value
    })
  },
  data: {
    idxName: "首页",
    bindVal: "初始内容",
    twBindVal: "",
    ifAgree: false
  }
<view class="idx_view">
    <label>双向绑定内容A:</label><text>{{bindVal}}</text>
    <input type="text" placeholder="请输入内容" catch:input="inputVal" />
  </view>
  <view class="idx_view">
    <label>双向绑定内容B:</label><text>{{twBindVal}}</text>
    <input type="text" placeholder="请输入内容" model:value="{{twBindVal}}" />
  </view>
  <view class="idx_view">
    <checkbox id="ifAgreeCheckBox" model:checked="{{ifAgree}}" /><label for="ifAgreeCheckBox">是否同意</label>
    <button id="submitData" type="primary" disabled="{{!ifAgree}}">提交</button>
  </view>

注意:<label>的for,绑定对应的组件(目前支持button、checkbox、radio、switch、input),代表点击此label时等同点击绑定的组件

相关文章

微信小程序与Spring Boot整合开发

本文结合一个示例,探讨Spring Boot和小程序的整合开发与完全云开发的对比。以客户端/服务器的体系结构来划分,第一部分介绍以Spring Boot为服务器(后端),而第二部分以微信小程序(含云开...

微信小程序开发极简入门(12):微信登录

我经手过的好些项目,系统本身还是以手机号为根本账号,与微信的账户关联有两种方式:手机号注册&登录(可以通过密码、验证码、本机号码一键登录),再关联微信的openId,以后通过微信登录,拿到openId...

给大家介绍一个分布式架构+微信小程序的Java项目

一直以来,程序员的成长都需要一个个真实项目来打磨,就跟一个好的狙击手需要子弹来滋养一样。2018年9月,知了堂Java班level5成立专项小组,顺利拿到了《百福云商城》项目。这个系统是某商贸公司外包...