【问题标题】:Onsen-UI slide navigation errorOnsen-UI 幻灯片导航错误
【发布时间】:2016-04-14 06:07:23
【问题描述】:

当我使用“幻灯片”转换转换到 person.html 页面时,我收到以下错误:“无法从 ons-page 元素获取 PageView。”

当我将过渡从“幻灯片”更改为“淡出”时,我没有收到错误消息。

<ons-navigator title="Navigator" var="myNavigator">
    <ons-sliding-menu main-page="index.html" menu-page="menu-timeline.html" max-slide-distance="260px" type="push" var="menu">
    </ons-sliding-menu>
    <ons-template id="index.html">
        <ons-page>
            <ons-toolbar>
                <div class="left">
                    <ons-toolbar-button>
                        <ons-icon icon="ion-home" fixed-width="false" style="font-size: 26px; vertical-align: -4px"></ons-icon>
                        People App
                    </ons-toolbar-button>
                </div>
                <div class="center">People</div>
                <div class="right">
                    <ons-toolbar-button>
                        <ons-icon icon="ion-search" onclick="myNavigator.pushPage('search-global.html', { animation : 'fade' } )"></ons-icon>
                    </ons-toolbar-button>
                    <ons-toolbar-button ng-click="menu.toggleMenu()">
                        <ons-icon icon="ion-more"></ons-icon>
                    </ons-toolbar-button>
                </div>
            </ons-toolbar>
            <!-- changing 'slide' to 'fade' below removes the error -->
            <ons-list class="timeline" modifier="inset">
                <ons-list-item class="timeline-li" modifier="tappable" ng-repeat="i in [1,2,3]" ng-click="myNavigator.pushPage('person.html', { animation : 'slide' } )">
                    <ons-row>
                        <ons-col width="50px">
                            <img ng-src="https://placeholdit.imgix.net/~text?txtsize=8&txt=50%C3%9750&w=50&h=50" class="timeline-image">
                        </ons-col>
                        <ons-col>
                            <div class="timline-from">
                                <span class="timeline-name">My Awesome Friend</span>
                            </div>
                        </ons-col>
                    </ons-row>
                </ons-list-item>
            </ons-list>

        </ons-page>
    </ons-template>

    <ons-template id="menu-timeline.html">
        <ons-page modifier="menu-page">
            <ons-toolbar modifier="transparent">
                <div class="right">
                    <ons-toolbar-button class="menu-closeMenu" ng-click="menu.closeMenu()">
                        </ons-icon>Close
                    </ons-toolbar-button>
                </div>
            </ons-toolbar>
            <ons-list class="menu-list">
                <ons-list-item class="menu-item" ng-click="menu.closeMenu()">
                    <ons-icon icon="fa-plus"></ons-icon>
                    New Person
                </ons-list-item>
            </ons-list>
        </ons-page>
    </ons-template>
    <ons-template id="person.html">
        <ons-page>
            <ons-toolbar>
                <div class="left">
                    <ons-toolbar-button onclick="myNavigator.popPage();">
                        <ons-icon icon="ion-arrow-left-a" fixed-width="false" style="font-size: 20px;vertical-align:-3px;margin-right:3px;"></ons-icon>
                        <ons-icon icon="ion-home" fixed-width="false" style="font-size: 26px; vertical-align: -4px"></ons-icon>
                    </ons-toolbar-button>
                </div>
                <div class="center">Person Name. </div>
                <div class="right">

                    <ons-toolbar-button ng-click="menu.toggleMenu()">
                        <ons-icon icon="ion-android-more-vertical"></ons-icon>
                    </ons-toolbar-button>
                </div>
            </ons-toolbar>
            <ons-list>
                <ons-list-item>
                    Hello. I am Person Name.
                </ons-list-item>
                <ons-list-item>
                    If this page appeared using 'slide' then an error resulted.
                </ons-list-item>
                <ons-list-item>
                    If it appeared using 'fade' then it should still function fine.
                </ons-list-item>
            </ons-list>
        </ons-page>
    </ons-template>
    <ons-template id="search-global.html">
        <ons-page>
            <ons-toolbar>
                <div class="left">
                    <ons-toolbar-button onclick="myNavigator.popPage();">
                        <ons-icon icon="ion-arrow-left-a" fixed-width="false" style="font-size: 20px;vertical-align:-3px;margin-right:3px;"></ons-icon>
                        <ons-icon icon="ion-home" fixed-width="false" style="font-size: 26px; vertical-align: -4px"></ons-icon>
                    </ons-toolbar-button>
                </div>
                <div class="center">Search People</div>
            </ons-toolbar>
            <ons-list>
                <ons-list-item>
                    <input type="text" placeholder="Enter search text" class="text-input text-input--transparent" style="margin-top:8px; width: 100%;">
                </ons-list-item>
                <ons-list-item style="padding-bottom:8px;padding-top:5px;">
                    <ons-button modifier="large" onclick="">
                        Search
                    </ons-button>
                </ons-list-item>
            </ons-list>
        </ons-page>
    </ons-template>
</ons-navigator>

我更喜欢使用幻灯片过渡,因为我认为它使导航看起来更线性。有谁知道我该如何解决这个错误?

这里是 CodePen:http://codepen.io/blarney2000/pen/qZoVzW

【问题讨论】:

    标签: javascript angularjs navigation onsen-ui


    【解决方案1】:

    基本上它只是无法找到初始页面。如果您只是将滑动菜单包装在页面内,那就没问题了。 Demo

    <ons-navigator title="Navigator" var="myNavigator">
      <ons-page>
        <ons-sliding-menu main-page="index.html" menu-page="menu-timeline.html" max-slide-distance="260px" type="push" var="menu">
        </ons-sliding-menu>
      </ons-page>
    </ons-navigator>
    

    为什么它只为幻灯片出问题是一个谜,但 Onsen 1 的开发已经完成,所以如果它是一个错误,那么它不太可能在版本 1 中修复。所以解决方案只是把页面,一切都会正常工作。此外,如果您愿意,可以将导航器放在滑动菜单中,如果这是您想要的。然后你可以有ons-sliding-menu &gt; ons-navigator &gt; ons-page

    【讨论】:

    • 谢谢,伊利亚。这很好用。我仍然担心拥有多个滑动菜单(这是否意味着多个导航器?),但我会在未来解决这个问题。
    • 这取决于你想要什么。我认为在所有情况下,您可能只能使用 1 个外部元素,并且可能使用更多的内部元素。如果你想在页面中有不同的滑动菜单,那么导航器应该在外面,你可以有很多菜单。但是我怀疑您只需要一个用于所有页面的滑动菜单。在这种情况下,您可以在滑动菜单的主页中拥有一个滑动菜单和一个导航器。从那里您可以使用导航器的方法。这样你就有 1 个滑动菜单、1 个导航器和导航器内的许多页面 :)
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2015-03-04
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多