Cordova 如何增加OnsenUI中的popPage()堆栈?

Cordova 如何增加OnsenUI中的popPage()堆栈?,cordova,stack,hybrid-mobile-app,onsen-ui,Cordova,Stack,Hybrid Mobile App,Onsen Ui,目前我正在通过OpenUI框架在phonegap中开发应用程序。我想增加popPage()函数的堆栈。目前我可以回到上一页,但不能超过这一页。我可以给ons.navigator.pushPage()指定与popPage()相同的转换吗?请有人帮助我尽快解决这些问题。我想你想跳转到第一页跳过first.html 您可以使用ons.navigator.resetToPage(url) 假设您有index.html、page1.html、page2.html和page3.html。 当我们在page3

目前我正在通过OpenUI框架在phonegap中开发应用程序。我想增加popPage()函数的堆栈。目前我可以回到上一页,但不能超过这一页。我可以给ons.navigator.pushPage()指定与popPage()相同的转换吗?请有人帮助我尽快解决这些问题。

我想你想跳转到第一页跳过first.html

您可以使用ons.navigator.resetToPage(url)

假设您有index.html、page1.html、page2.html和page3.html。 当我们在page3.html中时,我们想跳转到page1.html,跳过page2.html

index.html

index.html将page1.html作为根页面

<body>
  <ons-navigator page="page1.html"></ons-navigator>
</body>

page1.html

第1页将推到第2页

<ons-page>
  <ons-button ng-click="ons.navigator.pushPage('page2.html')">
     Push Page 2
  </ons-button>
</ons-page>

推送第2页
page2.html

第2页将推到第3页

<ons-page>
  <ons-button ng-click="ons.navigator.pushPage('page3.html')">
     Push Page 3
  </ons-button>
</ons-page>

推送第3页
page3.html

第3页将重置为第1页(跳过第2页)


重置到第1页

我面临的问题与你的问题一样。 我最终将覆盖默认的popPage函数

这就是我要做的

ons.ready(function(){
    /* Custom poppage */
    ons.navigator._popPage = function(options){
        var unlock = this._doorLock.lock();

        var leavePage = this.pages.pop();

        var step = options.step ? options.step : 1; // added step option

        if (this.pages[this.pages.length - step]) {
          this.pages[this.pages.length - step].element.css('display', 'block');
        }

        var enterPage = this.pages[this.pages.length -step];

        var event = {
          leavePage: leavePage,
          enterPage: this.pages[this.pages.length - step],
          navigator: this
        };

        var callback = function() {
            for(var s=1; s < step; s++){
                this.pages[this.pages.length - s].destroy();   // also destroy skipped page                    
            }
            leavePage.destroy();
            unlock();
            this.emit('postpop', event);
            event.leavePage = null;

            if (typeof options.onTransitionEnd === 'function') {
            options.onTransitionEnd();
            }
        }.bind(this);

        leavePage.options.animator.pop(enterPage, leavePage, callback);
    }
});

可能不是很聪明的解决方案,但我希望它能为您提供更好的解决方案。

我也使用ons.navigator.resetToPage(url),您可以使用第二个参数设置动画选项,例如:

ons.navigator.resetToPage(url,{animation:'fade'})

看一下:


您可以在中间销毁页面,然后弹出状态。

< P>我不确定<强> ONEN UI 2 ./强>,但是使用<强> ONSEN UI > 1 <强>,您可以在<强> ONS Navigor标签<强>中定义var属性:

<ons-navigator title="Navigator" var="testing_Nav">
  . 
  .
  .
  .
</ons-navigator>
testing_Nav.resetToPage('page_name.html', {animation: 'fade'});
有关详细信息:

按下按钮时,只能弹出多少次。可能你想用不同的动画来推送页面?我的意思是有3个页面index.html,first.html和second.html。如果我们从index开始,推到first.html,然后推到second.html,现在发生的是,当我从second弹出时,它只返回到first,而不是从first返回到index。请帮助我解决我面临的这些问题..假设从page3.html我执行popPage(),它会转到page2.html,但从page2.html我执行popPage(),它不会转到page1.html。我试过重新设置网页,但没有任何过渡效果。似乎popPage只进入前一页。我不想在执行popPage()时跳过任何页面
<ons-navigator title="Navigator" var="testing_Nav">
  . 
  .
  .
  .
</ons-navigator>
testing_Nav.resetToPage('page_name.html', {animation: 'fade'});