BUI 歷史記錄

2020-08-11 13:34 更新

單頁路由里面有一個(gè) router.history 而多頁沒有, 為了方便管理組件, 1.6.0以后都使用 bui.history 來獲取歷史記錄. 多頁的歷史記錄只會(huì)有一個(gè).

獲取所有歷史記錄

bui.history.get

// 獲取所有, 返回?cái)?shù)組
var allHistory = bui.history.get();


// 通過模塊名獲取某個(gè)歷史記錄, 返回對象
var main = bui.history.get("main");

獲取最后的記錄

bui.history.getLast

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


// 獲取最后的頁面的實(shí)例, exports 是需要模塊拋出才會(huì)有.
var currentDistance = bui.history.getLast("exports");

獲取上一個(gè)頁面的記錄

如果還沒有這個(gè),需要更新 bui.js

bui.history.getPrev

// 獲取上一個(gè)頁面
var prevHistory = bui.history.getPrev();
// 獲取上一個(gè)頁面的實(shí)例, exports 是需要模塊拋出才會(huì)有.
var prevDistance = bui.history.getPrev("exports");

獲取組件的實(shí)例

bui.history.getComponent

// 可以拿到list實(shí)例拋出的方法
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: 如果不確定該模塊會(huì)被哪種方式使用, 則可以使用這種方式獲取. module.id 在loader.define(function(req,ext,module){ }) 的第三個(gè)參數(shù)
  var params = bui.history.getParams(module.id);


// 方法2: 獲取單頁路由或者多頁路由的跳轉(zhuǎn)傳參 bui.load({url:"",param:{}}) 
  var params = bui.history.getParams("url");


// 方法3: 獲取以bui.page({url:"",param:{}}) 加載的的參數(shù), 通過以下方式獲取
  var pageParams = bui.history.getParams("page");


// 方法4: 獲取以router.loadPart, loader.load , component標(biāo)簽 加載的的參數(shù), 通過以下方式獲取
  var partParams = bui.history.getParams("component");

獲取彈窗組件的實(shí)例

bui.history.getPage

通過 bui.page 加載的模塊,使用這個(gè)方式獲取 例如:

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

// 可以拿到login實(shí)例拋出的方法
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")
    }
  }
  // 執(zhí)行
  form.init();
  return form;
})

內(nèi)部獲取彈窗的實(shí)例

pages/login/login.js

loader.define(function(require,export,module){
  var form = {
    init: function(){
      // 內(nèi)部可以拿到 module.id 來獲取彈窗, 進(jìn)行彈窗的操作.
      var dialog = bui.history.getPageDialog(module.id);
      // 關(guān)閉操作
          // dialog.close();


      console.log(dialog)
    }
  }
  // 執(zhí)行
  form.init();
  return form;
})

檢測頁面是否已經(jīng)加載

bui.history.check

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

檢測component是否已經(jīng)加載

bui.history.checkComponent

<component id="tab1" name="pages/components/list/index"></component>
// tab1 為 component 標(biāo)簽的id
var isLoaded = bui.history.check("tab1");

檢測component是否已經(jīng)加載

bui.history.checkPage

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

頁面刷新

bui.refreshbui.history.refresh 都可以.

  • 1.6.x 以下不建議使用頁面刷新, 不熟悉事件操作會(huì)造成事件重復(fù)綁定. 可以結(jié)合 loader.require 調(diào)用模塊拋出的方法, 實(shí)現(xiàn)局部刷新功能.

bui.history.refresh

bui.history.refresh();


bui.refresh();
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)