Onsen UI 分页:导航器和选项卡栏

2023-12-14

我对混合导航器和标签栏有疑问。

说明:主页(Main page1)由两个子页面(tab1和tab2)组成,通过tabbar访问,而其他页面(page2和3)通过导航器访问。 tab1 页面是第一个激活的页面。

布局:tab1 和 tab2 页面具有相同的工具栏(位于顶部)。 page2 和 page3 有不同的工具栏,带有后退按钮和另一个重定向到主页选项卡 1 的按钮。

我的代码是这样的,但我不知道它是否正确或最好的方法:

<!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-navigator作为应用程序的根目录,然后你就有了ons-tabbar作为一个孩子。这意味着当您尝试使用父导航器进行导航时,您会将另一个子导航器(页面)推到当前子导航器(选项卡栏)上,因此您将不会再看到标签栏(甚至不是工具栏,除非您在每一页中都放置一个新工具栏),直到您再次按下它或删除它上面的所有同级工具栏。此外,您的所有页面都将存储在同一个页面堆栈中,因为您只有一个导航器。这意味着您无法将 Tab1 和 Tab2 工作流程分离到两个不同的分支中:如果您在 Tab1 中重置ToPage,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。每个选项卡都有自己的工作流程,存储在不同的页面堆栈中,完全独立于其他选项卡。

正如我之前所说,这实际上取决于您的应用程序需要什么。例如,您可以有许多用于“设置”、“关于”等内容的选项卡,这些选项卡只是一页视图,然后只有一个选项卡中包含真正的应用程序的导航器。

如果您的疑虑现在得到澄清,请告诉我!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Onsen UI 分页:导航器和选项卡栏 的相关文章

随机推荐

  • “报告为空” - 是错误吗?

    我已经在 iReport 中创建了带有 3 个参数的报告 并且它运行成功 该报告是使用 3 个参数执行 MS SQL 存储过程 开始日期 enddate dept nm 部门名称 iReport 给出了很好的结果 当我将 jrxml 文件导
  • 全屏iframe高度为100%

    所有浏览器都支持 iframe height 100 吗 我使用 doctype 作为 在我的 iframe 代码中 如果我说 我的意思是它实际上会占据剩余页面的高度 因为顶部有另一个框架 其固定高度为 50px 所有主要浏览器 IE Fi
  • ADFS 2.0 无效名称 ID 策略

    我已经在 adfs 信赖方信任上配置了一个应用程序 因此我可以使用 adfs sso 登录 之后 我安装了 simplesamlphp 来处理该登录 并处理响应 saml 这是我的 authsources 配置 myauth gt arra
  • 关于 iPhone 的方向

    如何获取iPhone当前的方向 我浏览了这个网站 发现了以下两种方法 UIApplication共享应用程序 statusBarOrientation UIDevice currentDevice 方向 哪一种是获取当前方向的正确方法 我在
  • constexpr 使用静态函数初始化静态成员

    要求 我想要一个constexpr值 即编译时常量 计算自constexpr功能 我希望这两个范围都限定在类的命名空间内 即类的静态方法和静态成员 第一次尝试 我首先以 对我来说 显而易见的方式写下这个 class C1 constexpr
  • 有没有办法以编程方式确定字体文件是否具有特定的 Unicode 字形?

    我正在开发一个生成 PDF 的项目 其中可以包含相当复杂的数学和科学公式 文本以 Times New Roman 格式呈现 它具有相当不错的 Unicode 覆盖率 但并不完整 我们有一个系统可以用更完整的 Unicode 字体来替换 TN
  • Big Query 作业失败,并显示“遇到错误字符 (ASCII 0)”。

    我的工作因错误而失败 行 14222274 字段 1 遇到错误字符 ASCII 0 文件的其余部分未处理 数据已被压缩 并且我已验证文件中不存在 ASCII 0 字符 文件中只有 14222273 行 因此错误消息中打印的行号是文件末尾之后
  • Windows 窗体解析问题

    我在 Windows 窗体中开发了 1024 780 分辨率的屏幕 但有人说它在更高分辨率下无法正常显示 有什么办法可以处理这个问题吗 有没有办法让 Windows 窗体应用程序在所有分辨率下看起来都一样 我的建议并不是在所有屏幕上 使其看
  • 使用 EPPlus 将图像添加到 Excel 中

    我正在尝试使用 EPPlus 将同一图像多次添加到 Excel 文件中 我正在使用以下代码来执行此操作 Image logo Image FromFile path ExcelPackage package new ExcelPackage
  • 如何在Excel中对日期进行排序而不重复

    早上好 我有一个关于 Excel 中日期排名的问题 请参见下图 在排名栏中 我用了公式 RANK A3 A A 1 但这不是我想要的 我只希望相同的日期共享与我的目标格式列中显示的相同的排名 谁能告诉我应该应用什么公式来实现这个目标 非常感
  • 蚂蚁为其他蚂蚁服务

    我有几个项目 其中大多数都有 test 目标 运行测试并将结果存储在属性中 测试失败 所有项目都位于同一目录中 大项目 someproject1 big project someproject1 build xml big project
  • Angular Fire Auth 后未收到响应

    使用 AngularFire 注册用户后 我没有收到响应 用户电子邮件出现在 Angular 的身份验证基础上 但登录行为空 并且似乎没有执行 console log 函数 这是我的代码 希望你能帮助我 谢谢 app controller
  • 有没有办法从实例中获取平台和操作系统

    我正在尝试从我的 AWS EC2 实例获取一些信息 我想知道是否有办法提取信息 例如 Platform Version CentOS 6 0 or 7 0 Ubuntu 10 04 or 12 04 Windows 我想知道使用 SDK 是
  • VBA Access - 在 Word 文档中查找和替换文本

    我已经在 Excel 中成功编写了一些 VBA 代码 该代码打开现有的 Word 文档 根据 Excel 工作表中的信息查找并替换字符串 由于存在的源数据来自 Access 数据库 因此我想尝试将 VBA 代码移至 Access 中并从那里
  • 在 Swift 中获取指向 C char 数组的指针

    A 有这样的结构 在 mongodb c 驱动程序的 bson h 中定义 typedef struct uint32 t domain uint32 t code char message 504 bson error t 在 Swift
  • Android 中如何在不通知的情况下更新通知?

    所以我有一个通过 MQTT 接收温度的应用程序 为了避免收到垃圾邮件通知 我希望应用程序通知一次 即振动 播放声音 然后接下来的三次 如果通知没有被忽略 它只会更新温度值 所以 Notify 更新温度 更新温度 更新温度 5 或 1 如果您
  • 数据库错误 MongoDB:数据库消失

    启动了大量的进程 然后重新启动服务器 数据库就消失了 当我走进rockmongo时 我还没有看到旧的数据库 只有一个新的数据库管理员 仅此而已 db serverStatus host host version 2 0 6 process
  • 如何更改 Spring.Net 中的配置

    IoC 容器的一个优点是您可以在对象图底部交换模拟服务 然而 这在 Spring Net 中似乎比在其他 IoC 容器中更难做到 下面是一些在 Unity 中执行此操作并具有 Spring Net 代码的代码 namespace IocSp
  • PHP IMAP 函数的解决方法?尝试使用 XAMPP 处理本地主机上的传入电子邮件

    在我现在正在处理的项目中 我正在尝试添加功能 当用户向支持台发送电子邮件时 我可以将票证状态从 已关闭 更改为 重新打开 我还想将他们的电子邮件回复保存到数据库中 我遇到的问题是我无法让 PHP 的 IMAP 函数在我当前的 Apache
  • Onsen UI 分页:导航器和选项卡栏

    我对混合导航器和标签栏有疑问 说明 主页 Main page1 由两个子页面 tab1和tab2 组成 通过tabbar访问 而其他页面 page2和3 通过导航器访问 tab1 页面是第一个激活的页面 布局 tab1 和 tab2 页面具