navigator

众所周知,在浏览器里,我们可以通过前进或者回退按钮来切换页面,iOS/Android 的navigator模块就是用来实现类似的效果的。除了前进、回退功能,该模块还允许我们指定在切换页面的时候是否应用动画效果。

API

导航跳转

注意:使用push,pushParam,pushFull打开的页面只能用back,backFull返回,使用present打开的页面,只能用dismiss关闭
     push打头的方法和present方法打头的方法区别是动画效果不一样,push是由右往左打开一个页面,present是由下往上打开

/**
@param url 相对地址(支持root:写法)
*/
push(url)

/**
@param url 相对地址(支持root:写法)
@param param 参数
*/
pushParam(url,param )


/**
@param parameters (url:'地址',param:'参数',animate:'是否使用动画',isPortrait:'是否是竖屏')
@param callback 页面返回时的回调
*/
pushFull(parameters,callback)

/**
关闭当前页面,返回上一个页面,
*/
back()

/**
关闭当前页面,返回上一个页面,同时带上参数
@param param 带给上一个页面的参数
@param animate 是否使用动画,(android无效)
*/
backFull(param,animate)


/**
打开一个页面,动画是从下往上弹出来
*/
present(url)

/**
打开一个页面,动画是从下往上弹出来
@param parameters (url:'地址',param:'参数',animate:'是否使用动画',isPortrait:'是否是竖屏')
@param  callback 页面返回时的回调
*/
presentFull(parameters,callback)

/**
关闭,present开头方法打开的页面
*/
dismiss()


/**
关闭,present开头方法打开的页面,同时带上参数
@param param 带给上一个页面的参数
@param animate 是否使用动画,(android无效)
*/
dismissFull(param,animate)

/**
* 开启手势返回(仅对ios有效)
**/
enableBackGesture()

获取参数

注意:此方法只有写在onPageInit里面才能有效获取
/**
 获取上一个页面传递来的参数,
*/
param()

定页返回

如果你打开的了多个页面,现在希望越过中间的页面,返回第一个或其它页面,这里的方法将帮你做到

/**
 返回指定id的页面,id由setPageId方法设定
*/

backTo(id)


/**
设置当前页的id
*/
setPageId(id)

/**
将此页面及这个页面之后打开的页面纳入一个堆栈,
*/
setRoot(id)

现在来说一下怎么达到效果,假设有A->B->C三个页面,现在希望从C直接回到A
1.A的onPageInit中调用setRoot('A'),setPageId('A')
2.C中backTo('A')

Demo

  /**推入式跳转
  push()
  {
      var nav = weex.requireModule('navigator') ;
      //相对路径写法,也可以root:绝对路径
      nav.push('page1.js')
  }

  /**带参数推入式跳转
  pushWidthParam()
  {
   var self=this;
   var nav = weex.requireModule('navigator') ;
   var param={};
   param.a='value1'
   nav.pushParam('page1.js',param);
   //或者
   nav.pushFull({
                    url: 'navlanscape.js',
                    param: {a: '这是传过来的值'},
                    animate:true,
                    isPortrait:false
                }, (e) => {
                    if (e != undefined)
                        self.callbackdata = e.ok;
                })
  }

  /**弹出式跳转
  present(){
    var self=this;
    var nav = weex.requireModule('navigator') ;
    nav.present('page1.js')
    //或者
    nav.presentFull({
        url: 'navlanscape.js',
        param: {a: '这是传过来的值'},
        animate:true,
        isPortrait:false
        }, (e) => {
        if (e != undefined)
        self.callbackdata = e.ok;
        })
  },


  /**获取参数
  created:function(){

          var self=this;
          var globalEvent = weex.requireModule('globalEvent') ;
          globalEvent.addEventListener("onPageInit", function (e) {


              var navigator = weex.requireModule('navigator') ;
              var param=navigator.param();



          });
      }

results matching ""

    No results matching ""