微信小程序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
            })
          }
        }
      })
    }
			          上一篇:
			            uniapp开发微信小程序-2.页面制作 
			          
			          下一篇:
			            微信小程序获取用户手机号码 
			          
			        