zoukankan      html  css  js  c++  java
  • 微信小程序页面跳转、逻辑层模块化

    一、页面的跳转

      微信小程序的页面跳转函数方法有两个,另外还有两种模块跳转方式。

      函数跳转:

      1.wx.navigateTo(OBJECT):

    wx.navigateTo({
             url: 'test?id=1'
           })
    //
    保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。
    //问号后面的参数为传递至指定页面onload方法内的参数。id为自定义参数名,在跳转页面获取参数值时,也是通过这个设置的参数来获取的。

      2.wx.redirectTo(OBJECT):

           wx.redirectTo({
              url: 'test?id=1'
           })
    //销毁
    当前页面,跳转到应用内的某个页面。
    //问号后面的参数为传递至指定页面onload方法内的参数。id为自定义参数名,在跳转页面获取参数值时,也是通过这个设置的参数来获取的。

      模块跳转:

      1.标签跳转:

       在wxml中添加一个navigator元素,实现跳转。

    <navigator url='../list/list'>点击我</navigator>

      2.tabBar跳转:

      在主页中设置tabBar,在tabBar中设置跳转页面。通过点击其中的图标,实现跳转。

    {
                      "tabBar": {
                       "list": [{
                       "pagePath": "index",
                       "text": "首页"
                          },{
                       "pagePath": "other",
                       "text": "其他"
                       }]
                     }
              }

      通过wx.switchTab(OBJECT)方法,可以从非tabBar跳转至tabBar页面,并关闭所有其他非tabBar页面。

    wx.switchTab({
                   url: '/index'
                })

      

      页面的返回:

                 关闭当前页面,返回上一页面或多级页面。可通过getCurrentPages()获取当前的页面栈,决定需要返回几层。 

    OBJECT 参数说明:

    参数类型默认值说明
    delta Number 1 返回的页面数,如果 delta 大于现有页面数,则返回到首页。

    // 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码
    
             // 此处是A页面
              wx.navigateTo({
                  url: 'B?id=1'
              })
    
             // 此处是B页面
              wx.navigateTo({
                url: 'C?id=1'
              })
    
               // 在C页面内 navigateBack,将返回A页面
                 wx.navigateBack({
               delta: 2
              })

    二、逻辑层的模块化:

      调用全局函数getApp()可以获取小程序的全局应用实例,如果需要全局有效的数据我们可以再App()中定义。

    //app.js
    App({
      myNumber:1,
    })
    //logs.js
    onLoad: function () {
    var app = getApp()
    app.myNumber++
    }
    //list.js
    onLoad: function (options) {
        console.log("我的数据是:",getApp().myNumber);
      },

      为了提高代码的可读性和效率,可以通过小程序的模块化特性,将公用的或者需要重复复用的代码从程序里抽取出来,打包成单独的.js文件(微信小程序在创建之初就有一个utils/utils.js文件作为js模块,里面暴露了一个获取当前时间的方法),提供某种特定的功能,这就是程序的模块。如果你想要在外部使用utils.js中封装的方法,只能通过module.exports和exports方法对外暴露接口。

    module.exports = {
      formatTime: formatTime,
      '对外方法名':'本地方法名'
    }

      如何在需要使用这些模块的文件中使用:使用 require(path) 将公共代码引入(require 暂时不支持绝对路径)。

    //util.js
    function sayHello(name) {
        console.log(`Hello ${name} !`)
    }
    module.exports = {
        sayHello: sayHello
    }
    var util= require('../../utils/util.js')
    Page({
         data:[],
          onLoad: function() {
            console.log(util.sayHello('Cc'))
        },
    })
    
    

      

      

  • 相关阅读:
    PostGIS解压版安装
    gulp监听文件变化,并拷贝到指定目录
    pre在火狐中不换行
    Undefined symbols for architecture i386: "_crc32", referenced from:
    响应式自动化开发流程-Windows 版
    Gulp入门教程
    SVG折线图
    git-版本控制
    log4j
    CSS:描述样式
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/10241909.html
Copyright © 2011-2022 走看看