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

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

  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);    //放入缓存对象
  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页面
  1. <ion-item  href="#/app/playlists/{{playlist.id}}">  //playlists.html页面
  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路由中配置接受这个参数

  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

  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中取出变量

  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. JSP页面传递参数乱码问题整理

    1.JSP页面之间传递中文参数乱码 (1).a.jsp中正常传递参数,b.jsp 中 <% String projectName = new String(request.getParamete ...

  2. 前端 使用localStorage 和 Cookie相结合的方式跨页面传递参数

    A页面 html代码: 姓名:<input type="text" id="name1"> 年龄:<input type="text ...

  3. router-link跳转页面传递参数及页面刷新方法

    使用router-link传参: 第一种: 路径:http://localhost:8080/goodListP?id=2 跳转的页面获取参数: this.$route.query.id 第二种: 路 ...

  4. Jquery Javascript 跳转页面传递参数以及获取url的参数

    传递参数: window.location='editCourse.html?dataId='+dataId+''; 获取url中的参数(封装的方法):    function getUrlParam ...

  5. jsp页面传递参数是如何与javabean进行关联的

    总结:1.severlet容器是通过JavaBean中的属性方法名来获取属性名的,然后根据此属性名来从request中取值 2.JavaBean中属性方法的命名,set后的名称要与你从request中 ...

  6. SpringMVC 接受页面传递参数

    一共是五种传参方式: 一:直接将请求参数名作为Controller中方法的形参 public  String login (String username,String password)   : 解 ...

  7. Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数

    点击浏览器中的URL链接,启动特定的App. 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]" ...

  8. SpringMVC 页面传递参数到controller的五种方式

    一共是五种传参方式: 一:直接将请求参数名作为Controller中方法的形参 public  String login (String username,String password)   : 解 ...

  9. React 列表页面传递参数

    React 列表进入详情页面 首先安装 react-router-dom (4.0) npm/yarn install react-router-dom 路由跳转配置 列表 父组件 this.prop ...

随机推荐

  1. centos7.3安装Nginx

    首先,如果是阿里云的centos的话,去阿里云管理端为80端口设置一组访问规则,因为阿里云默认是不开的 1. 添加Nginx yum 资源库 rpm -Uvh http://nginx.org/pac ...

  2. JavaScript 条件判断算法综合实战

    在赌场21点游戏中,玩家可以通过计算牌桌上已经发放的卡牌的高低值来让自己在游戏中保持优势,这就叫21点算法. 根据下面的表格,每张卡牌都分配了一个值.如果卡牌的值大于0,那么玩家应该追加赌注.反之,追 ...

  3. 记录Linux中遇到的技巧

    压缩排除.svn目录 打包test目录,排除其中所有子目录中的.svn文件夹: # tar -zcf test.tar.gz test/ --exclude=.svn# zip -qr test.zi ...

  4. Intellij IDEA搭建vue-cli项目

    1.安装/升级node环境 vue-cli对于node和npm的版本是有要求的.     可以通过 node -v (npm -v)查看当前版本,通过 where node (where npm)查看 ...

  5. springboot 事务回滚

    在springboot中,使用事务回滚时,添加@Transactional注解,然后在try-catch块中,发生异常时,在catch中 添加 TransactionAspectSupport.cur ...

  6. Codeforces 833A The Meaningless Game - 数论 - 牛顿迭代法 - 二分法

    Slastyona and her loyal dog Pushok are playing a meaningless game that is indeed very interesting. T ...

  7. Django框架(九) Django之ORM常用字段和参数

    ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范 ...

  8. Kettle 连接 Oracle 问题总结

    一. Driver class 'oracle.jdbc.driver.OracleDriver' could not be found, make sure the 'Oracle' driver ...

  9. 牛客竞赛&&mjt的毒瘤赛

    题目链接 https://ac.nowcoder.com/acm/contest/368/F 思路 询问可以离线. 然后每个节点上建32个权值线段树(权值不大,其实只要20颗) 记录每一位权值为x(如 ...

  10. 不能安装64位office提示已安装32位的

    安装64位office办公软件的时候提示已经安装32位的office办公软件所以无法继续安装,但实际上之前安装的32位的office办公软件已经卸载了.问题现象截图如下: 从问题描述中,我们其实已经能 ...