BUI 历史记录

2020-08-11 13:34 更新

单页路由里面有一个 router.history 而多页没有, 为了方便管理组件, 1.6.0以后都使用 bui.history 来获取历史记录. 多页的历史记录只会有一个.

获取所有历史记录

bui.history.get

// 获取所有, 返回数组
var allHistory = bui.history.get();


// 通过模块名获取某个历史记录, 返回对象
var main = bui.history.get("main");

获取最后的记录

bui.history.getLast

// 获取所有, 返回对象
var lastHistory = bui.history.getLast();


// 获取最后的页面的实例, exports 是需要模块抛出才会有.
var currentDistance = bui.history.getLast("exports");

获取上一个页面的记录

如果还没有这个,需要更新 bui.js

bui.history.getPrev

// 获取上一个页面
var prevHistory = bui.history.getPrev();
// 获取上一个页面的实例, exports 是需要模块抛出才会有.
var prevDistance = bui.history.getPrev("exports");

获取组件的实例

bui.history.getComponent

// 可以拿到list实例抛出的方法
var listDistance =  bui.history.getComponent("list");;

<component id="list" name="pages/components/list/index"></component>

pages/components/list/index.js

loader.define(function(){
  var uiList = bui.list({
    id:"",
    url:""
  })
  return uiList;
})

获取传参

bui.history.getParams

// 方法1: 如果不确定该模块会被哪种方式使用, 则可以使用这种方式获取. module.id 在loader.define(function(req,ext,module){ }) 的第三个参数
  var params = bui.history.getParams(module.id);


// 方法2: 获取单页路由或者多页路由的跳转传参 bui.load({url:"",param:{}}) 
  var params = bui.history.getParams("url");


// 方法3: 获取以bui.page({url:"",param:{}}) 加载的的参数, 通过以下方式获取
  var pageParams = bui.history.getParams("page");


// 方法4: 获取以router.loadPart, loader.load , component标签 加载的的参数, 通过以下方式获取
  var partParams = bui.history.getParams("component");

获取弹窗组件的实例

bui.history.getPage

通过 bui.page 加载的模块,使用这个方式获取 例如:

bui.page({
  url:"pages/login/login.html"
})

// 可以拿到login实例抛出的方法
var login =  bui.history.getPage("pages/login/login");;

pages/login/login.js

loader.define(function(require,export,module){
  var form = {
    init: function(){
      console.log("login init")
    }
  }
  // 执行
  form.init();
  return form;
})

内部获取弹窗的实例

pages/login/login.js

loader.define(function(require,export,module){
  var form = {
    init: function(){
      // 内部可以拿到 module.id 来获取弹窗, 进行弹窗的操作.
      var dialog = bui.history.getPageDialog(module.id);
      // 关闭操作
          // dialog.close();


      console.log(dialog)
    }
  }
  // 执行
  form.init();
  return form;
})

检测页面是否已经加载

bui.history.check

var isLogin = bui.history.check("pages/login/login.html");

检测component是否已经加载

bui.history.checkComponent

<component id="tab1" name="pages/components/list/index"></component>
// tab1 为 component 标签的id
var isLoaded = bui.history.check("tab1");

检测component是否已经加载

bui.history.checkPage

// tab1 为 id
var isLoaded = bui.history.checkPage("tab1");

页面刷新

bui.refreshbui.history.refresh 都可以.

  • 1.6.x 以下不建议使用页面刷新, 不熟悉事件操作会造成事件重复绑定. 可以结合 loader.require 调用模块抛出的方法, 实现局部刷新功能.

bui.history.refresh

bui.history.refresh();


bui.refresh();
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号