微信小程序如何在公共组件中改变某一个页面的属性值

需求

公共组件A改变页面B的属性isShow的值。

思路

首先目前我不了解可以直接在组件中改变页面的值的方法,所以我通过监听的方式在B页面监听app.js的某一属性值的改变从而改变B页面的值,众所周知app.js的某一属性值是很容易就能更改的。

app.js
  globalData: {
    isShow: false
  },//给app.js中被监听的值赋初始值
    // 使用数据劫持模式监听数据变化
  observe(obj, key, watch, that) {
    let val = obj[key];
    Object.defineProperty(obj, key, {
      configurable: true,
      enumerable: true,
      set: function (value) {
        watch(val, value, that);
        val = value;
      },
      get: function () {
        return val;
      }
    })
  }

B页面

  data:{
    isShow:false
  },
  //在onReady中调用app.js的observe,并且传参,第二个参数为要监听的app.js的属性值
  onReady() {
    const app = getApp()
    app.observe(app.globalData, "isShow", this.watch, this);
  },
  watch(oldVal, newVal, that) {
    that.setData({
      isShow: newVal//监听后得到新的值,并将新的值赋值给页面的这个我们要改变的这个属性
    })
  }

A组件

组件中只需要在你需要改变页面值的时候改变一下app.js的所被监听的这个属性的值即可。

getApp().globalData.isShow = true
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用微信小程序的 input 组件和 button 组件来实现一个验证密码登录页面。 首先,在 wxml 文件添加以下代码: ``` <view class="container"> <form bindsubmit="onSubmit"> <input name="password" type="password" placeholder="请输入密码" bindinput="onInput" /> <button type="primary" disabled="{{!canSubmit}}">登录</button> </form> </view> ``` 这里使用了一个 form 组件来包裹 input 和 button 组件,方便提交表单数据。在 input 组件设置了 type 属性为 password,表示输入框内容为密码类型,输入时会以星号掩盖。同时,使用了 bindinput 属性来监听输入框的输入事件,用于实时更新输入框的。 接着,在 js 文件添加以下代码: ``` Page({ data: { password: '', // 输入框的 canSubmit: false // 是否可以提交表单 }, onInput(e) { this.setData({ password: e.detail.value, // 更新输入框的 canSubmit: e.detail.value.length >= 6 // 判断是否可以提交表单 }) }, onSubmit(e) { if (this.data.password === '123456') { // 判断密码是否正确 // 登录成功,可以进行跳转或其他操作 wx.showToast({ title: '登录成功', icon: 'success', duration: 2000 }) } else { // 登录失败,给出提示 wx.showToast({ title: '密码错误', icon: 'none', duration: 2000 }) } } }) ``` 这里使用了 Page 对象来定义一个页面,其定义了两个数据属性:password 和 canSubmit。在 onInput 方法,使用 setData 方法更新了 password 和 canSubmit 的,canSubmit 的根据输入框的长度来判断是否可以提交表单。在 onSubmit 方法,判断输入的密码是否正确,如果正确则登录成功并给出提示,否则登录失败并给出提示。 最后,在 wxss 文件添加以下代码: ``` .container { display: flex; flex-direction: column; justify-content: center; align-items: center; height: 100vh; } form { display: flex; flex-direction: column; align-items: center; width: 80%; } input { width: 100%; padding: 10rpx; margin-bottom: 20rpx; border: 1rpx solid #ccc; border-radius: 5rpx; font-size: 30rpx; } button { width: 100%; padding: 10rpx; border-radius: 5rpx; font-size: 30rpx; color: #fff; background-color: #00a0e9; } button:disabled { opacity: 0.5; } ``` 这里使用了 flex 布局来居显示页面内容,设置了 input 和 button 组件的样式,使其看起来更美观。 这样就完成了一个基本的验证密码登录页面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小婵婵不怕鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值