微信分享链接参数丢失该怎么办?如何才能做好这样的参数呢?比较常用的分享链接参数传递方式
最近有人发现微信分享链接参数丢失。为什么是这样?据说官方为了显示得更漂亮,已经自动缩小并重新编码了。那么我们如何获取微信分享链接参数呢?当项目逐渐变大,内容和业务增多时,我们都会涉及到多个接口之间的参数传递。怎样才能做好这样的参数呢?今天小编就带大家来了解一下。
简单解释一下一些比较常用的共享链接参数传递方法。
1.经过路线
该方法用于tabs类型的新建ionic项目中。
它是在route中定义的,进入页面的route接收参数。
接口中传递参数
或者在控制器中使用代码传递参数
$state.go('游戏细节',{gameId:gameId})
all 可以用于从接口A 向接口B 传输字符串类型的数据。同样的方法:/xxxx:/xxxx:/xxx 可以用于向接口B 传输多个字符串参数。
优点是代码简单,通过共享链接返回数据,数据不会丢失。
缺点是数据放在url地址中,使得访问地址过长。如果传递多个参数。更换微信共享地址可能会导致重定向地址错误。
不要使用此方法传递对象。虽然可以实现,但是会出现很长的url地址。
2.通过$rootScope传递参数
这个比较简单。将$rootScope注入接口A和B。在接口A上使用$rootScope.data={xxx:xxx}||'xxxx'。在接口B上直接使用$rootScope.data。
优点是使用方便、高效、快速,不仅可以传递字符串,还可以传递对象。当需要传输大量数据时,它非常有用。
缺点是代码随意且不规范,全局变量无处不在且难以维护,数据常驻内存且占用空间。数据保存在本地,数据丢失通过分享链接恢复。
该方法不仅可以用来传递参数,还可以用于公共服务和公共模块的处理。它也非常容易使用。
但要注意不要过度依赖这种技术,否则在run中编写大量代码会影响项目的启动。
比如这里可以写一般的加载,只要项目启动就会加载这两个模块。
然后只需使用$rootScope.$broadcast('loading:show');在需要的地方。此处类似地定义$rootScope.fun
=
func(),也可以全局调用$rootScope.fun()
注意不要在这里放太多的生意。后来的代码调整和业务修改真是让人心酸。
3、通过service传递与方法2类似,只是需要增加更多的代码,优点和缺点都类似。但比方法2更加规范,符合AngularJS的设计规范。
业务不在控制器中处理,而是交给服务处理。即接口A引用服务C的setData,接口B引用服务C的getData。
最好的方法,忘了说了,是通过route传一个key,然后服务器需要配合。通过这个key获取整个对象数据。这样无论分享时没有数据还是URL太长都可以解决。