JavaScript-Onsen UI分页:导航器和选项卡
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript-Onsen UI分页:导航器和选项卡,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5463字,纯文字阅读大概需要8分钟。
内容图文
![JavaScript-Onsen UI分页:导航器和选项卡](/upload/InfoBanner/zyjiaocheng/662/cc1a64a41988475193446b5aaed01203.jpg)
我对导航器和标签栏的混合使用感到怀疑.
说明:主页(Main page1)由两个子页面(tab1和tab2)组成,可通过tabbar访问,而其他页面(page2和3)可通过导航器访问. tab1页面是第一个激活的页面.
布局:tab1和tab2页面具有相同的工具栏(在顶部). page2和page3具有不同的工具栏,其中具有后退按钮和另一个按钮以重定向到主页tab1.
我的代码是这样,但是我不知道它是正确的还是最好的方法:
<!doctype html>
<html lang="en" ng-app="app">
<head>
<meta charset="utf-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<link rel="stylesheet" href="lib/onsen/css/onsenui.css">
<link rel="stylesheet" href="lib/onsen/css/onsen-css-components.css">
<link rel="stylesheet" href="styles/app.css"/>
<style>
.item {
padding: 10px;
line-height: 1;
}
</style>
<script src="lib/onsen/js/angular/angular.js"></script>
<script src="lib/onsen/js/onsenui.js"></script>
<script>
angular.module('app', ['onsen']);
angular.module('app').controller('AppController', function($scope) {
// functions for AppController
});
angular.module('app').controller('Tab1Controller', function($scope) {
// functions for Tab1Controller
});
angular.module('app').controller('Tab2Controller', function($scope) {
// functions for Tab2Controller
});
angular.module('app').controller('Page2Controller', function($scope) {
// functions for Page2Controller
});
angular.module('app').controller('Page3Controller', function($scope) {
// functions for Page3Controller
});
</script>
</head>
<body ng-app="app" ng-controller="AppController">
<ons-navigator animation="slide" var="app.navi" >
<ons-toolbar>
<div class="left"><ons-toolbar-button ng-click="app.navi.pushPage('page3.html')">Go</ons-toolbar-button></div>
<div class="center">App</div>
<div class="right">
<ons-toolbar-button><ons-icon icon="fa ion-navicon" style="font-size: 32px; width: 1em"></ons-icon></ons-toolbar-button>
</div>
</ons-toolbar>
<ons-tabbar position="top">
<ons-tab page="tab1.html" label="Tab1" active="true"></ons-tab>
<ons-tab page="tab2.html" label="Tab2"></ons-tab>
</ons-tabbar>
</ons-navigator>
<ons-template id="tab1.html" >
<ons-page ng-controller="Tab1Controller">
<p>Content tab1</p>
</ons-page>
</ons-template>
<ons-template id="tab2.html">
<ons-scroller>
<p>Content Tab2</p>
<ons-list ng-controller="Tab2Controller">
<ons-list-item modifier="chevron" class="item" ng-repeat="item in [1,2,3]" ng-click="app.navi.pushPage('page2.html')">
<p>Item {{item}}</p>
</ons-list-item>
</ons-list>
<ons-scroller>
</ons-template>
<ons-template id="page2.html">
<ons-page ng-controller="Page2Controller">
<ons-toolbar>
<div class="left">
<ons-back-button></ons-back-button>
<ons-toolbar-button ng-click="app.navi.resetToPage('index.html')">HOME</ons-toolbar-button>
</div>
<div class="center">PAGE2</div>
<div class="right">
<ons-toolbar-button><ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em"></ons-toolbar-button>
</div>
</ons-toolbar>
<ons-scroller>
<p>Content PAGE2</p>
<ons-list ng-controller="Tab2Controller">
<ons-list-item modifier="chevron" class="item" ng-repeat="item in [1,2,3]" ng-click="app.navi.pushPage('page3.html')">
<p>Item {{item}}</p>
</ons-list-item>
</ons-list>
</ons-scroller>
</ons-page>
</ons-template>
<ons-template id="page3.html">
<ons-page ng-controller="Page3Controller">
<ons-toolbar>
<div class="left">
<ons-back-button></ons-back-button>
<ons-toolbar-button ng-click="app.navi.resetToPage('index.html')">HOME</ons-toolbar-button>
</div>
<div class="center">PAGE3</div>
<div class="right">
<ons-toolbar-button><ons-icon icon="ion-navicon" style="font-size: 32px; width: 1em"></ons-toolbar-button>
</div>
</ons-toolbar>
<p style="text-align: center">
<ons-button modifier="light" ng-click="app.navi.popPage('page1.html');">Pop</ons-button>
</p>
<p style="text-align: center">
<ons-button modifier="light" ng-click="app.navi.pushPage('page2.html');">Page 2</ons-button>
</p>
</ons-page>
</ons-template>
<ons-template id="popover.html">
<ons-popover direction="up down" cancelable>
<div style="text-align: center; opacity: 0.5;">
<p>This is a popover!</p>
<p><small>Click the background to remove the popover.</small></p>
</div>
</ons-popover>
</ons-template>
</body>
</html>
我希望对其他人有用.
解决方法:
由于没有特定的问题,因此我将尝试澄清您在此处使用的导航模式.
<!-- Navigator as root element -->
<ons-navigator>
<ons-page>
<ons-tabbar>
<ons-tab>...</ons-tab>
<ons-tab>...</ons-tab>
</ons-tabbar>
</ons-page>
</ons-navigator>
您将ons导航器作为应用程序的根目录,然后将ons-tabbar作为孩子.这意味着,当您尝试使用父级导航器进行导航时,您会将另一个子项(页面)推到当前子项(选项卡栏)的上方,因此您将不再看到该选项卡栏(甚至没有工具栏,除非您放置新的一页),直到您再次将其推入或删除其上的所有兄弟姐妹为止.另外,由于您只有一个导航器,因此所有页面都将存储在同一页面堆栈中.这意味着您无法在两个不同的分支中分开Tab1和Tab2工作流程:如果在Tab1中重设了ToToPage,Tab2也将被重设.
如果您意识到这一点,那是完全可以的,这是您真正想要做的.这取决于您的需求.
<!-- Tab Bar as root element -->
<ons-tabbar>
<ons-tab>
<ons-navigator>...</ons-navigator>
</ons-tab>
<ons-tab>
<ons-navigator>...</ons-navigator>
</ons-tab>
</ons-tabbar>
另一种不同的方法(也许是更常见的方法)是将ons-tabbar作为项目的根,并定义一个ons-navigator作为每个ons-tab的子级,您需要进一步导航.像这样,您的标签栏将始终可见,因为您使用导航器所做的更改不是所有内容,而是特定ons-tab的内容.每个选项卡将拥有自己的工作流,该工作流存储在不同的页面堆栈中,彼此完全独立.
正如我之前所说,这实际上取决于您对应用程序的需求.例如,您可能有许多选项卡,用于诸如“设置”,“关于”等内容,它们只是一页视图,而在真正的应用程序中,只有一个选项卡中有一个导航器.
让我知道您的疑问现在是否得到澄清!
内容总结
以上是互联网集市为您收集整理的JavaScript-Onsen UI分页:导航器和选项卡全部内容,希望文章能够帮你解决JavaScript-Onsen UI分页:导航器和选项卡所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。