程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

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

balukai 2025-01-04 17:01:01 文章精选 10 ℃

前文:

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

样式

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时等同点击绑定的组件

Tags:

最近发表
标签列表