ionic入门教程第七课-简要说明几种界面之间的参数传递及优缺点

来源:互联网 发布:网络营业执照 淘宝 编辑:程序博客网 时间:2024/05/16 06:31

截至2016年4月13日19点32分,我发布的ionic入门教程,已经发布6课了,

总访问量将近6000,平均每节课能有1000的访问量。其中访客最多的是第三课有2700的访客。


其实我开始的时候计划的挺好的,就按照我这阶段的安排,慢慢的带大家做一个比较完整的项目。

但这几天发生了一些事情,让我不得不重新思考该跟大家说什么呢?

从访客数据来看,大家对于整体架构的布置和代码逻辑的规范相对比较感兴趣,也说明大家对基础入门的新建和普通的指令比较了解。

我本来是不打算讲过于基础的东西的,可是今天在技术群里,有个朋友问说ng-repeat怎么用?有人回答他连这个都问,那还怎么做项目。

其实我知道有些朋友基础比较差,看不懂API文档,或者对文档理解不是很清晰,但是人家想学啊。

我知道教这样的朋友并不需要什么技术,却需要足够的耐心。

而且今天我公司让我带一个零基础的同事学ionic,我打算在6-10天左右,让他上手做项目。

所以从下节课开始,我可能会更新比较基础简单的指令。

言归正传。

当项目慢慢做大,内容和业务越来越多的时候,我们都会涉及到多界面之间的参数传递。

再此我简要的说明一下几种比较常用的参数传递方式。

1、通过route传递

这种方法是在新建tabs类型的ionic项目中就使用到的。

在route中定义了,进入页面的路由接收参数


在界面中传递参数


或者在controller中使用代码传递参数

 $state.go('game-detail',{gameId:gameId})

都可是实现从A界面向B界面传递一个字符串类型的数据,同样的方法:/xxxx:/xxxx:/xxx就可以实现向B界面传递多个字符串参数。

优点是代码简单,传递数据通过分享链接返回,数据不会丢失。

缺点是将数据放到url地址中,使得访问地址过长。若传递多个参数。在微信分享地址放回是可能导致重定向地址错误。

切忌使用这个方法传递对象,虽然可以实现,但是会有一个非常长的url地址。

2、通过$rootScope传递参数

这个更简单点,在A、B界面中注入$rootScope,在A界面使用$rootScope.data={xxx:xxx}||"xxxx".在B界面直接使用$rootScope.data

优点是使用便捷,高效快速,不止能传递字符串还能传递对象。在需要传递较大数据量时,挺好用的。

缺点是代码随意,不规范,到处都是全局变量不好维护,数据常驻内存占用空间。数据保存在本地通过分享链接返回数据丢失。

这个方法不止可以用来传递参数,活用于公共业务和公共模块的处理,也非常好用。

但是切忌过于依赖,这个技巧,不然把大量的代码写在run中,会影响项目的启动。

比如通用的loading,可以写在这里,只要项目启动了这两个模块就加载了。


然后再需要的地方$rootScope.$broadcast('loading:show');就可以了。同样的在这里定义$rootScope.fun = func(),也可在全局调用$rootScope.fun()

注意切忌把太多的业务放在这里,后期代码调整和业务修改,真的很悲催。

3、通过service传递和方法2差不多,就是需要多谢一下代码,优缺点也类似。但是比方法2更加的规范,符合angularjs的设计规范,

不在controller中处理业务,而是交由服务处理。就是A界面引用C服务的setData,B界面引用C服务的getData。

今天的内容有点少了,下次我就讲点基础的。先把在项目中比较常用的几个标签说明白了,再安排其他的内容。

最好的方法,忘记说了,通过route传递一个key,然后需要服务端配合。通过这个key去获取整个对象数据,这样子,不管是分享回来没数据还是url过长,都可以决解

请大家关注一下我的公众号,就算给我一点点鼓励吧大笑

项目Demo地址:无
如果你还有什么其他的问题,可以通过以下方式找到我

新浪微博:小虎Oni
微信公众号:ionic__



1 0
原创粉丝点击