微信小程序Page与app关系、常用操作

本文简要总结微信小程序中几个常用操作和概念

一、概念:Page与App

每一个Page就代表一个页面,你创建了一个Page之后,软件会自动为你创建js, wxml, wxss。你可以在wxml中定义该页面的结构,在wxss中定义该页面的样式,在js中定义该页面会用到的操作、算法

App就是代表了整个项目程序,它站在最高层。在app.js中可以定义全局变量,这样整个项目下的所有页面都可以使用它,非常方便。

在这里插入图片描述
红色部分就是项目结构的Page,黄色部分就是项目结构的app数据。


二、如何在一个页面下获取app里的全局数据?

在该Page.js文件中的顶部加上:const app = getApp()
意为:获取该项目的app对象,这样后面我们就方便拿app里面的全局数据

【例子】:
比如我现在在app.js里面定义一个全局变量value:

globalData: {
    value: '123'
  }

然后我要在另一个Page.js的OnLoad方法中使用到它,就可以这样操作:

const app = getApp()	//获取app对象

Page({

  /**
   * 页面的初始数据
   */
  data: {
    username: '',
    password: '',
  },
	/**
  * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  //获取全局变量value的值,并保存在函数内的局部变量v中
    var v = app.globalData.value;
    //show
    console.log(v)
  },
}

最后在Page启动之后,我们就会在console中看到以下输出:
在这里插入图片描述


三、与Page相关的数据放哪里?如何在函数中获取和设置?

还是用刚刚的例子

const app = getApp()	//获取app对象

Page({

  /**
   * Page页面的初始数据存放
   */
  data: {
    username: '',
    password: '',
  },

   /**
   * 用户输入用户名
   */
  onInput1: function (e) {
    //这里获取外界传进来的数据
    var username = e.detail.value;
    //将username设置回Page的data里
    this.setData({
      username: username
    })
}

注意一点:刚开始很多人会犯一个错误,写成:
this.username = e.detail.value;
看起来很合乎逻辑,将传入的数据直接设置在this.username下。

错误原因在于,这个地方的this时表示当前页面,当前页面直接找username,它是找不到的,所以会报错:username is not defined

我们要设置数据,必须得
this.setData({
username: e.detail.value
})
方可

使用


四、最后分享一个提交小函数:

//当前端按下confirm按钮之后,所执行的操作
onConfirm: function(){
    //this指的是这个页面下
    var username = this.data.username;
    var password = this.data.password;
    if(typeof username == "undefined" || username == null || username == ""){
      wx.showToast({
        title: '用户名不能为空!',
        icon: 'none',
        duration: 2000//持续的时间
      })
    }else if(typeof password == "undefined" || password == null || password == ""){
      wx.showToast({
        title: '密码不能为空!',
        icon: 'none',
        duration: 2000//持续的时间
      })
    }else{
      wx.request({
        url: 'http://localhost:8080/wechat/login', //仅为示例,并非真实的接口地址
        data: {          //参数为json格式数据
          name: username ,
          password: password,
        },
        header: {
            //设置参数内容类型为json
            'content-type': 'application/json'
        },
        success: function(res) {
          if(res.data == null || res.data == "" || typeof res.data == "undefined"){
            wx.showToast({
              title: '用户不存在或密码错误!',
              icon: 'none',
              duration: 2000//持续的时间
            })
          }else{
            console.log(res.data)
            //设置全局变量,保存用户信息
            app.globalData.userinfo = res;
            wx.showToast({
              title: '登录成功!',
              icon: 'none',
              duration: 2000//持续的时间
            })
            //跳转
            wx.switchTab({
              url: '../main/main'
            })
          }
        }
      })

    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值