1、使用AngularJS自带的$cacheFactory服务

$cacheFactory 从字面直译即为缓存工厂,可以用它来生成缓存对象,缓存对象以key-value的方式进行数据的存储,在整个应用内是单例的,可以在service或者controller中注入这个服务,然后就可以用它来自由的存取对象以及各种变量,下面是一个简单例子

[javascript] view plain copy

 
  1. .controller('AppCtrl', function ($scope, $ionicModal, $timeout, $cacheFactory) {
  2. var user = {name: 'jax', age: 18, sex: '男'};
  3. var user_cache = $cacheFactory("user_cache");  //声明一个user_cache缓存对象
  4. user_cache.put("lol",user);    //放入缓存对象
[javascript] view plain copy

 
  1. .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory) {
  2. var user_cache = $cacheFactory.get("user_cache");   //取出名为user_cache的缓存对象
  3. var user = user_cache.get("lol");   //取出缓存对象中键值为lol的对象
  4. // user_cache.remove("lol");  //删除键值为lol对应的值
  5. // user_cache.removeAll(); //清除缓存对象中所有的键值对
  6. // user_cache.destroy(); //销毁user_cache缓存对象
  7. console.log(user);
  8. });

当从AppCtrl对应页面切换到PlaylistCtrl对应的页面时,浏览器控制台打印结果:

$cacheFactory常用的几个方位api如下:

- {{*}} get({string} key) — 返回与key对应的value值,如果未命中则返回undefined

- {void} remove({string} key) — 从缓存中删除一个键值对

- {void} removeAll() — 删除所有缓存中的数据

- {void} destroy() — 删除从$cacheFactory引用的这个缓存.

2、使用url传参
例:playlists.htm页面将 playlist.id 传递到 playlist页面
[javascript] view plain copy

 
  1. <ion-item  href="#/app/playlists/{{playlist.id}}">  //playlists.html页面
[javascript] view plain copy

 
  1. .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory) {
  2. var user_cache = $cacheFactory.get("user_cache");   //取出名为user_cache的缓存对象
  3. var user = user_cache.get("lol");   //取出缓存对象中键值为lol的对象
  4. // user_cache.remove("lol");  //删除键值为lol对应的值
  5. // user_cache.removeAll(); //清除缓存对象中所有的键值对
  6. // user_cache.destroy(); //销毁user_cache缓存对象
  7. console.log(user);
  8. var playlistId=$stateParams.playlistId;  //用$stateParams 取值
  9. console.log("playlistId:"+playlistId);
  10. });

需要注意的是必须在app.js路由中配置接受这个参数

[html] view plain copy

 
  1. .state('app.single', {
  2. url: '/playlists/:playlistId',  //配置多个参数用:a/:b/:c
  3. views: {
  4. 'menuContent': {
  5. templateUrl: 'templates/playlist.html',
  6. controller: 'PlaylistCtrl'
  7. }
  8. }

3、service或者factory传值(service跟factory中都是单例模式,定义的变量在整个应用内唯一)

定义变量data

[javascript] view plain copy

 
  1. angular.module('starter.controllers', [])
  2. .service('dataService',function () {
  3. var data="I come from service";  //定义变量
  4. return{
  5. getData:function () {
  6. return data;
  7. }
  8. }
  9. })

在controller中取出变量

[javascript] view plain copy

 
  1. .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory,dataService) {
  2. console.log("sercice data:"+dataService.getData());  //得到data
  3. });


4、使用H5本地存储localStorage或者sessionStorage(还有indexDB,websql在数据量较大情况下使用)

getItem //取记录

setItem//设置记录

removeItem//移除记录

key//取key所对应的值

clear//清除记录

键值对存储,用法也是非常简单,上面给出了常用的api,

1、使用AngularJS自带的$cacheFactory服务

$cacheFactory 从字面直译即为缓存工厂,可以用它来生成缓存对象,缓存对象以key-value的方式进行数据的存储,在整个应用内是单例的,可以在service或者controller中注入这个服务,然后就可以用它来自由的存取对象以及各种变量,下面是一个简单例子

[javascript] view plain copy

 
  1. .controller('AppCtrl', function ($scope, $ionicModal, $timeout, $cacheFactory) {
  2. var user = {name: 'jax', age: 18, sex: '男'};
  3. var user_cache = $cacheFactory("user_cache");  //声明一个user_cache缓存对象
  4. user_cache.put("lol",user);    //放入缓存对象
[javascript] view plain copy

 
  1. .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory) {
  2. var user_cache = $cacheFactory.get("user_cache");   //取出名为user_cache的缓存对象
  3. var user = user_cache.get("lol");   //取出缓存对象中键值为lol的对象
  4. // user_cache.remove("lol");  //删除键值为lol对应的值
  5. // user_cache.removeAll(); //清除缓存对象中所有的键值对
  6. // user_cache.destroy(); //销毁user_cache缓存对象
  7. console.log(user);
  8. });

当从AppCtrl对应页面切换到PlaylistCtrl对应的页面时,浏览器控制台打印结果:

$cacheFactory常用的几个方位api如下:

- {{*}} get({string} key) — 返回与key对应的value值,如果未命中则返回undefined

- {void} remove({string} key) — 从缓存中删除一个键值对

- {void} removeAll() — 删除所有缓存中的数据

- {void} destroy() — 删除从$cacheFactory引用的这个缓存.

2、使用url传参
例:playlists.htm页面将 playlist.id 传递到 playlist页面
[javascript] view plain copy

 
  1. <ion-item  href="#/app/playlists/{{playlist.id}}">  //playlists.html页面
[javascript] view plain copy

 
  1. .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory) {
  2. var user_cache = $cacheFactory.get("user_cache");   //取出名为user_cache的缓存对象
  3. var user = user_cache.get("lol");   //取出缓存对象中键值为lol的对象
  4. // user_cache.remove("lol");  //删除键值为lol对应的值
  5. // user_cache.removeAll(); //清除缓存对象中所有的键值对
  6. // user_cache.destroy(); //销毁user_cache缓存对象
  7. console.log(user);
  8. var playlistId=$stateParams.playlistId;  //用$stateParams 取值
  9. console.log("playlistId:"+playlistId);
  10. });

需要注意的是必须在app.js路由中配置接受这个参数

[html] view plain copy

 
  1. .state('app.single', {
  2. url: '/playlists/:playlistId',  //配置多个参数用:a/:b/:c
  3. views: {
  4. 'menuContent': {
  5. templateUrl: 'templates/playlist.html',
  6. controller: 'PlaylistCtrl'
  7. }
  8. }

3、service或者factory传值(service跟factory中都是单例模式,定义的变量在整个应用内唯一)

定义变量data

[javascript] view plain copy

 
  1. angular.module('starter.controllers', [])
  2. .service('dataService',function () {
  3. var data="I come from service";  //定义变量
  4. return{
  5. getData:function () {
  6. return data;
  7. }
  8. }
  9. })

在controller中取出变量

[javascript] view plain copy

 
  1. .controller('PlaylistCtrl', function ($scope, $stateParams, $cacheFactory,dataService) {
  2. console.log("sercice data:"+dataService.getData());  //得到data
  3. });


4、使用H5本地存储localStorage或者sessionStorage(还有indexDB,websql在数据量较大情况下使用)

getItem //取记录

setItem//设置记录

removeItem//移除记录

key//取key所对应的值

clear//清除记录

键值对存储,用法也是非常简单,上面给出了常用的api,

ionic 跨页面传值的几种方法的更多相关文章

  1. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】

    阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 Session JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总 ...

  2. React Router v4 页面传值的三种方法

    传值方法 1.props.params 使用React router定义路由时,我们可以给指定一个path,然后指定通配符可以携带参数到指定的path: <Route path='/user/: ...

  3. C#跨窗体传值的几种方法分析(很详细)

    创建一个Winform窗体应用程序项目,然后添加一个Form2窗体. 在Form1和Form2中各添加一个textBox和button: 单击Form1中的button1,弹出Form2,然后要做的就 ...

  4. javascript静态页面传值的三种方法分享

    一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 复制代码 代码如下: <input type="text" ...

  5. javascript HTML静态页面传值的四种方法

    一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 代码如下: <input type="text" name= ...

  6. ios页面传值的几种方法

    1.属性2.方法3.代理方法4.SharedApplication5.NSUserdefault6.通过一个单例的class来传递 属性这种方法传值挺方便的,只需要拿到它的指针,如果重新声明一个指针, ...

  7. React Router页面传值的三种方法

    文章地址:https://blog.csdn.net/qq_23158083/article/details/68488831

  8. uni-app开发经验分享一: 多页面传值的三种解决方法

    开发了一年的uni-app,在这里总结一些uni-app开发中的问题,提供几个解决方法,分享给大家: 问题描述:一个主页面,需要联通一到两个子页面,子页面传值到主页面,主页面更新 问题难点: 首先我们 ...

  9. mui框架开发aop的跨页面传值

    mui开发跨平台app,其实不乏会涉及到跨页面传值,今天给大家简单介绍一种常用也是简单的传值方法 咱在这里设置一个场景,就是两个页面进入到同一页面展示不同的元素,此时需要在这两个页面各自设置一个区别的 ...

随机推荐

  1. 在ubuntu中安装psutil

    环境:ubuntu 16.04 LTS + python 2.7/3.5共存 + psutil 4.3.0 1.sudo apt-get install python3-dev # 先把python3 ...

  2. 基于SQL Server 2008 Service Broker构建企业级消息系统

    注:这篇文章是为InfoQ 中文站而写,文章的地址是:http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroke ...

  3. php导入excel

    使用phpexcelreader这个类文件来导入excel具体步骤: 先下载文件,然后引入phpexcelreader:下载地址:http://www.waaqi.com/wp-content/upl ...

  4. 满足NABC的软件创意

    创意——几个简单的想法 ——崔海营 创意一:               大学生自行车租借一点通 随着大学生人数的不断增多以及大学生活的空闲时间十分充裕,许多同学十分乐意到一些附近的景点去游玩或者烧烤 ...

  5. Docker私服仓库push 错误

    docker push 提交时错误提示: docker push 192.168.1.110:5000/redis Error response from daemon: invalid regist ...

  6. 输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。取出该字符串中所有的字母。顺序不能改变!并把大写字母变成小写,小写字母变成大写!

    package lovo.Linyoujia; import java.util.Scanner; public class Java { @param args public static void ...

  7. 关于setInterval() 和setTimeout()的使用

    参照W3C标准: setInterval() 方法 使用对象为 HTML DOM Window 对象 定义和用法 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. ...

  8. Spark-1.5.1 on CDH-5.4.7

    1.修改拷贝/root/spark-1.5.1-bin-hadoop2.6/conf下面spark-env.sh.template到spark-env.sh,并添加设置HADOOP_CONF_DIR: ...

  9. 基于H5的移动端开发,window.location.href在IOS系统无法触发问题

    最近负责公司的微信公众号开发项目,基于H5进行开发,某些页面window.location.href在Android机上能正常运行而IOS系统上无法运行,导致无法重定向到指定页面,查了好久终于找到方法 ...

  10. Glide 小知识点