ionic 跨页面传值的几种方法
1、使用AngularJS自带的$cacheFactory服务
$cacheFactory 从字面直译即为缓存工厂,可以用它来生成缓存对象,缓存对象以key-value的方式进行数据的存储,在整个应用内是单例的,可以在service或者controller中注入这个服务,然后就可以用它来自由的存取对象以及各种变量,下面是一个简单例子
- .controller('AppCtrl', function ($scope, $ionicModal, $timeout, $cacheFactory) {
- var user = {name: 'jax', age: 18, sex: '男'};
- var user_cache = $cacheFactory("user_cache"); //声明一个user_cache缓存对象
- user_cache.put("lol",user); //放入缓存对象
- .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory) {
- var user_cache = $cacheFactory.get("user_cache"); //取出名为user_cache的缓存对象
- var user = user_cache.get("lol"); //取出缓存对象中键值为lol的对象
- // user_cache.remove("lol"); //删除键值为lol对应的值
- // user_cache.removeAll(); //清除缓存对象中所有的键值对
- // user_cache.destroy(); //销毁user_cache缓存对象
- console.log(user);
- });
当从AppCtrl对应页面切换到PlaylistCtrl对应的页面时,浏览器控制台打印结果:
$cacheFactory常用的几个方位api如下:
- {{*}} get({string} key) — 返回与key对应的value值,如果未命中则返回undefined。
- {void} remove({string} key) — 从缓存中删除一个键值对
- {void} removeAll() — 删除所有缓存中的数据
- {void} destroy() — 删除从$cacheFactory引用的这个缓存.
- <ion-item href="#/app/playlists/{{playlist.id}}"> //playlists.html页面
- .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory) {
- var user_cache = $cacheFactory.get("user_cache"); //取出名为user_cache的缓存对象
- var user = user_cache.get("lol"); //取出缓存对象中键值为lol的对象
- // user_cache.remove("lol"); //删除键值为lol对应的值
- // user_cache.removeAll(); //清除缓存对象中所有的键值对
- // user_cache.destroy(); //销毁user_cache缓存对象
- console.log(user);
- var playlistId=$stateParams.playlistId; //用$stateParams 取值
- console.log("playlistId:"+playlistId);
- });
需要注意的是必须在app.js路由中配置接受这个参数
- .state('app.single', {
- url: '/playlists/:playlistId', //配置多个参数用:a/:b/:c
- views: {
- 'menuContent': {
- templateUrl: 'templates/playlist.html',
- controller: 'PlaylistCtrl'
- }
- }
3、service或者factory传值(service跟factory中都是单例模式,定义的变量在整个应用内唯一)
定义变量data
- angular.module('starter.controllers', [])
- .service('dataService',function () {
- var data="I come from service"; //定义变量
- return{
- getData:function () {
- return data;
- }
- }
- })
在controller中取出变量
- .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory,dataService) {
- console.log("sercice data:"+dataService.getData()); //得到data
- });
4、使用H5本地存储localStorage或者sessionStorage(还有indexDB,websql在数据量较大情况下使用)
getItem //取记录
setItem//设置记录
removeItem//移除记录
key//取key所对应的值
clear//清除记录
键值对存储,用法也是非常简单,上面给出了常用的api,
1、使用AngularJS自带的$cacheFactory服务
$cacheFactory 从字面直译即为缓存工厂,可以用它来生成缓存对象,缓存对象以key-value的方式进行数据的存储,在整个应用内是单例的,可以在service或者controller中注入这个服务,然后就可以用它来自由的存取对象以及各种变量,下面是一个简单例子
- .controller('AppCtrl', function ($scope, $ionicModal, $timeout, $cacheFactory) {
- var user = {name: 'jax', age: 18, sex: '男'};
- var user_cache = $cacheFactory("user_cache"); //声明一个user_cache缓存对象
- user_cache.put("lol",user); //放入缓存对象
- .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory) {
- var user_cache = $cacheFactory.get("user_cache"); //取出名为user_cache的缓存对象
- var user = user_cache.get("lol"); //取出缓存对象中键值为lol的对象
- // user_cache.remove("lol"); //删除键值为lol对应的值
- // user_cache.removeAll(); //清除缓存对象中所有的键值对
- // user_cache.destroy(); //销毁user_cache缓存对象
- console.log(user);
- });
当从AppCtrl对应页面切换到PlaylistCtrl对应的页面时,浏览器控制台打印结果:
$cacheFactory常用的几个方位api如下:
- {{*}} get({string} key) — 返回与key对应的value值,如果未命中则返回undefined。
- {void} remove({string} key) — 从缓存中删除一个键值对
- {void} removeAll() — 删除所有缓存中的数据
- {void} destroy() — 删除从$cacheFactory引用的这个缓存.
- <ion-item href="#/app/playlists/{{playlist.id}}"> //playlists.html页面
- .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory) {
- var user_cache = $cacheFactory.get("user_cache"); //取出名为user_cache的缓存对象
- var user = user_cache.get("lol"); //取出缓存对象中键值为lol的对象
- // user_cache.remove("lol"); //删除键值为lol对应的值
- // user_cache.removeAll(); //清除缓存对象中所有的键值对
- // user_cache.destroy(); //销毁user_cache缓存对象
- console.log(user);
- var playlistId=$stateParams.playlistId; //用$stateParams 取值
- console.log("playlistId:"+playlistId);
- });
需要注意的是必须在app.js路由中配置接受这个参数
- .state('app.single', {
- url: '/playlists/:playlistId', //配置多个参数用:a/:b/:c
- views: {
- 'menuContent': {
- templateUrl: 'templates/playlist.html',
- controller: 'PlaylistCtrl'
- }
- }
3、service或者factory传值(service跟factory中都是单例模式,定义的变量在整个应用内唯一)
定义变量data
- angular.module('starter.controllers', [])
- .service('dataService',function () {
- var data="I come from service"; //定义变量
- return{
- getData:function () {
- return data;
- }
- }
- })
在controller中取出变量
- .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory,dataService) {
- console.log("sercice data:"+dataService.getData()); //得到data
- });
4、使用H5本地存储localStorage或者sessionStorage(还有indexDB,websql在数据量较大情况下使用)
getItem //取记录
setItem//设置记录
removeItem//移除记录
key//取key所对应的值
clear//清除记录
键值对存储,用法也是非常简单,上面给出了常用的api,
ionic 跨页面传值的几种方法的更多相关文章
- 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】
阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 Session JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总 ...
- React Router v4 页面传值的三种方法
传值方法 1.props.params 使用React router定义路由时,我们可以给指定一个path,然后指定通配符可以携带参数到指定的path: <Route path='/user/: ...
- C#跨窗体传值的几种方法分析(很详细)
创建一个Winform窗体应用程序项目,然后添加一个Form2窗体. 在Form1和Form2中各添加一个textBox和button: 单击Form1中的button1,弹出Form2,然后要做的就 ...
- javascript静态页面传值的三种方法分享
一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 复制代码 代码如下: <input type="text" ...
- javascript HTML静态页面传值的四种方法
一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 代码如下: <input type="text" name= ...
- ios页面传值的几种方法
1.属性2.方法3.代理方法4.SharedApplication5.NSUserdefault6.通过一个单例的class来传递 属性这种方法传值挺方便的,只需要拿到它的指针,如果重新声明一个指针, ...
- React Router页面传值的三种方法
文章地址:https://blog.csdn.net/qq_23158083/article/details/68488831
- uni-app开发经验分享一: 多页面传值的三种解决方法
开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家: 问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新 问题难点: 首先我们 ...
- mui框架开发aop的跨页面传值
mui开发跨平台app,其实不乏会涉及到跨页面传值,今天给大家简单介绍一种常用也是简单的传值方法 咱在这里设置一个场景,就是两个页面进入到同一页面展示不同的元素,此时需要在这两个页面各自设置一个区别的 ...
随机推荐
- C#.NET微信公众账号接口开发系列文章整理--微信接口开发目录,方便需要的博友查询
前言: 涉及微信接口开发比较早也做的挺多的,有时间的时候整理了开发过程中一些思路案例,供刚学习微信开发的朋友参考.其实微信接口开发还是比较简单的,但是由于调试比较麻烦,加上微信偶尔也会给开发者挖坑,并 ...
- socketserver服务器
''' 网络编程 Socket(TCP,IP)套接字 服务端 运行起来, 客户端 客户端 客户端 客户端 服务端: import socket sk = socket.socket() #绑定端口号 ...
- Cogs 14. [网络流24题] 搭配飞行员
这道题其实蛮好想的,因为分为正,副飞行员.所以就把正飞行员当作Boy,副飞行员当作Girl.然后做Hungry即可. #include<bits/stdc++.h> using names ...
- C# MD5加密
public static string Encrypt(string txt) { System.Security.Cryptography.MD5CryptoServiceProvider md5 ...
- mongo virtual
var options={"upsert":false,"multi":false,'new':false}; 不存是否插入,更新是否批量,返回内容是更新前还是 ...
- BroadCast Receiver的使用
定义 广播接收器分为标准广播和有序广播,标准广播是异步执行的广播,有序广播是同步执行的,同一时刻只有一个广播接收器会收到广播,执行结束后,广播才会继续传递. 静态注册 在Androidmanifest ...
- Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档
array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...
- SpringMVC与MyBatis整合之日期格式转换
在上一篇博客<SpringMVC与MyBatis整合(一)——查询人员列表>中遗留了日期格式转换的问题,在这篇记录解决过程. 对于controller形参中pojo对象,如果属性中有日期类 ...
- React Native + Nodejs 使用RSA加密登录
想用rn做个RSA(非对称加密)登录 基本流程就是在服务端生成RSA后,将“公钥”发到客户端,然后客户端用“公钥”加密信息发送到服务端,服务务端用私钥解密. 过程不复杂,问题在于,nodejs和rn都 ...
- listview指定某item的点击效果
需求:listview的某些item能够点击,需要点击效果,有些item不能点击,需要屏蔽点击效果. 实现: 1.layout: <ListView android:id="@+id/ ...