用Trigger.io改进移动Angular.js应用

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/42107669 用Trigger.io改进移动Angular.js应用作者:chszs,转载需注明。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/42107669

用Trigger.io改进移动Angular.js应用

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

Trigger.io Forge可以让我们使用最新、最好的Web技术来开发本地移动应用。
本文展示了开发一个简单的Angular.js应用示例,并使用Forge模块增强此应用,包括:
1)使用forge.prefs来增加离线能力和持久化能力
2)使用forge.topbar来增加本地topbar和动作按钮
3)使用forge.tabbar来实现视图间的导航

本示例是做一个TODO列表。

一、创建一个Forge应用

第一步是创建一个Forge应用,要确保APP可以离线运行,我们必须在本地包含angular.min.js和bootstrap.css文件。运行代码后可以看到上面的界面。
整个应用的结构如下:

index.html的内容:

<!doctype html>
<html ng-app>
	<head>
		<script src="js/angular-1.0.1.min.js"></script>
		<script src="js/todo.js"></script>
		<link rel="stylesheet" href="css/bootstrap.css">
		<style>
			.done-true {
				text-decoration: line-through;
				color: grey;
			}
		</style>
	</head>
	<body>
		<h2>Todo</h2>
		<div ng-controller="TodoCtrl">
			<span>{{remaining()}} of {{todos.length}} remaining</span>
			[ <a href="" ng-click="archive()">archive</a> ]
			<ul class="unstyled">
				<li ng-repeat="todo in todos">
					<input type="checkbox" ng-model="todo.done">
					<span class="done-{{todo.done}}">{{todo.text}}</span>
				</li>
			</ul>
			<form ng-submit="addTodo()">
				<input type="text" ng-model="todoText"	size="30"
							 placeholder="add new todo here">
				<input class="btn-primary" type="submit" value="add">
			</form>
		</div>
	</body>
</html>

二、持久化数据

现在HTML5示例的程序已经完成,那么我们可以使用Forge的扩展功能来改进此应用。
我们要做的第一件事是使用prefs模块来持久化TODO列表。无论TODO列表是否得到更新,都需要保存它。代码如下:
forge.prefs.set(“todos”, $scope.todos);


当APP运行时,就可以用存储的TODO列表数据恢复TODO列表了。

// 用存储的数据恢复TODO列表
forge.prefs.get("todos", function(todos{
	// 更新Angular模型, $apply确保视图得到更新
	$scope.$apply(function(){
		if(todos){
			$scope.todos = todos;
		} else{
			$scope.todos = [
				{text:'learn angular', done:true},
				{text:'build an angular app', done:false},
				{text:'extend angular app to work with Forge', done:false}
			];
		}
	});
}));
要注意的是这块代码$scope.$apply(function () { ... }),它告诉Angular,此代码块会修改模型,代码运行后视图应该得到更新。没有这块代码,一旦prefs被载入后,用户是看不到更新的。

三、添加一个topbar

我们还可以为APP的界面添加一个topbar,即使TODO列表太长,导致页面卷边,topbar也总是可见的。要做到这一点,我们可以把index.html的内容<h2>Todo</h2>删除,添加topbar模块。

topbar模块允许我们添加按钮事件,我们可以在页面上移除存档的链接,还可以添加本地按钮来存档已完成的任务。代码如下:

forge.topbar.addButton({
	icon: "img/accept.png"
}, function(){
	$scope.$apply($scope.archive);
});
四、添加一个tabbar

如同topbar一样,我们还可以使用Forge添加一个本地tabbar。借此,我们将第二页添加到TODO列表应用中,这页的功能是允许用户查看以前归档的任务。
要做到这一点,我们添加一些HTML代码以及几个JavaScript函数来实现两页之间的切换,TODO列表的持久化仍旧使用prefs实现。代码如下:

// 添加Forge tabbar按钮
forge.tabbar.addButton({
	icon: "img/list.png",
	text: "Todo list"
}, function(button){
	button.setActive();
	button.onPressed.addListener(function(){
		$scope.$apply($scope.showList);
	});
});
forge.tabbar.addButton({
	icon: "img/archive.png",
	text: "Archive"
}, function(button){
	button.onPressed.addListener(function(){
		$scope.$apply($scope.showArchive);
	});
})
五、总结

我们现在有了一个简单的TODO列表应用,在Forge运行,并同时利用了Angular.js和Forge模块的优点,还允许访问本地特性,并同时支持Android和iOS的运行。

  

完整的源码在GitHub,见:https://github.com/Connorhd/Forge-Angular-Todo

目录
相关文章
|
13天前
|
设计模式 前端开发 JavaScript
【JavaScript 技术专栏】JavaScript 设计模式与实战应用
【4月更文挑战第30天】本文探讨JavaScript设计模式在提升开发效率和代码质量中的关键作用。涵盖单例、工厂、观察者、装饰器和策略模式,并通过实例阐述其在全局状态管理、复杂对象创建、实时数据更新、功能扩展和算法切换的应用。理解并运用这些模式能帮助开发者应对复杂项目,提升前端开发能力。
|
16天前
|
JavaScript 前端开发
js变量的作用域、作用域链、数据类型和转换应用案例
【4月更文挑战第27天】JavaScript 中变量有全局和局部作用域,全局变量在所有地方可访问,局部变量只限其定义的代码块。作用域链允许变量在当前块未定义时向上搜索父级作用域。语言支持多种数据类型,如字符串、数字、布尔值,可通过 `typeof` 检查类型。转换数据类型用 `parseInt` 或 `parseFloat`,将字符串转为数值。
18 1
|
20小时前
|
设计模式 JavaScript 算法
js设计模式-策略模式与代理模式的应用
策略模式和代理模式是JavaScript常用设计模式。策略模式通过封装一系列算法,使它们可互换,让算法独立于客户端,提供灵活的选择。例如,定义不同计算策略并用Context类执行。代理模式则为对象提供代理以控制访问,常用于延迟加载或权限控制。如创建RealSubject和Proxy类,Proxy在调用RealSubject方法前可执行额外操作。这两种模式在复杂业务逻辑中发挥重要作用,根据需求选择合适模式解决问题。
|
1天前
|
存储 监控 JavaScript
使用Node.js构建实时聊天应用的技术指南
【5月更文挑战第12天】本文指导使用Node.js、Express.js和Socket.IO构建实时聊天应用。技术栈包括Node.js作为服务器环境、WebSocket协议、Express.js作为Web框架和Socket.IO处理实时通信。步骤包括项目初始化、安装依赖、搭建服务器、实现实时聊天功能、运行应用以及后续的完善和部署建议。通过这个指南,读者可以学习到创建简单实时聊天应用的基本流程。
|
7天前
|
数据采集 JavaScript 数据可视化
Node.js爬虫在租房信息监测与分析中的应用
Node.js爬虫在租房信息监测与分析中的应用
|
13天前
|
开发框架 JavaScript 前端开发
【JavaScript 与 TypeScript 技术专栏】TypeScript 在 Web 开发中的前沿应用
【4月更文挑战第30天】TypeScript在Web开发中日益重要,以其强大的类型系统提升代码质量,支持组件化开发,与React、Vue、Angular等框架良好集成。在大型项目管理中,TypeScript助于代码组织和优化,提高团队协作效率。此外,它提升开发体验,提供智能提示和错误检测。众多成功案例证明其前沿应用,未来将在Web开发领域持续发挥关键作用。
|
13天前
|
JavaScript 前端开发 开发者
【TypeScript技术专栏】TypeScript在Angular开发中的应用
【4月更文挑战第30天】本文探讨了TypeScript在Angular开发中的应用。Angular与TypeScript的结合利用了静态类型检查和ECMAScript特性,简化了大型Web应用的开发。文章涵盖组件、数据绑定、依赖注入、服务、守卫和路由以及模块化等方面,展示了如何在Angular中有效使用TypeScript。此外,还提到了TypeScript的高级应用,如泛型、高级类型和装饰器。掌握这些知识将有助于提升Angular应用的可维护性和可扩展性。
|
13天前
|
前端开发 JavaScript 网络协议
【JavaScript技术专栏】WebSockets在JavaScript中的应用
【4月更文挑战第30天】WebSocket是为解决HTTP协议在实时通信上的局限而诞生的技术,提供全双工、持久连接的通信方式,适合在线聊天、实时游戏等场景。JavaScript中的WebSocket API使浏览器与服务器能建立持久连接,通过事件处理连接、发送/接收数据及错误。相较于AJAX轮询和长轮询,WebSockets更高效、实时,是现代Web实时通信的优选。
|
13天前
|
移动开发 JavaScript 前端开发
【JavaScript技术专栏】Web Worker在JavaScript中的应用
【4月更文挑战第30天】HTML5的Web Worker API解决了JavaScript单线程性能瓶颈问题,允许在后台线程运行JS代码。本文介绍了Web Worker的基本概念、类型、用法和应用场景,如复杂计算、图像处理和数据同步。通过实例展示了搜索建议、游戏开发和实时数据分析等应用,并提醒注意其无法直接访问DOM、需消息传递通信以及移动端资源管理。Web Worker为前端开发提供了多线程能力,提升了Web应用性能和用户体验。
|
14天前
|
JSON 前端开发 JavaScript
使用JavaScript制作一个简单的天气应用
使用JavaScript制作一个简单的天气应用