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. windows dhcp server

    windows7并没有自带dhcp server的功能,需要安装额外的软件,软件很小巧,只有几百K字节,下载地址http://www.dhcpserver.de/cms/download/ 假设解压路 ...

  2. 批处理no.bat

    在公司每次我启动电脑, 网络连接需要一段时间, 而我想在这段小时间里面, 一旦网络连接成功就帮我启动微信和qq, 如果还没有连接成功就继续监测直到有网络了才会成功才会打开两个程序, 当打开程序后脚本自 ...

  3. opencv学习之路(7)、访问图像像素

    一.动态地址访问 #include <opencv2/opencv.hpp> #include<iostream> using namespace cv; using name ...

  4. (4opencv)对OpenCV中“旋转”的思考和实验

    ​    我记得曾经有人对OpenCV的旋转吐槽,意思是它自己没有很好的关于选择的算法.在新的版本里面添加了这些函数(我还没有时间去看是什么时候pr的).现在一个比较棘手的问题,就是OpenCV中旋转 ...

  5. MFC限制edit控件的字符输入长度

    一. 1.Edit 控件添加EN_CHANGE事件 #define MAX_SIZE 200 void CMyDlg::OnChangeEditFeed() { // TODO: 如果该控件是 RIC ...

  6. 【问题解决:连接异常】 java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long

    问题描述: MySQL更新到8.0.11之后连接数据库时会报出错误 Your login attempt was not successful, try again.Reason: Could not ...

  7. 【字符串区别】SQLServer中char、varchar、nchar、nvarchar的区别:

    一.定义 char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符 ...

  8. Sample Classification Code of CIFAR-10 in Torch

    Sample Classification Code of CIFAR-10 in Torch from: http://torch.ch/blog/2015/07/30/cifar.html req ...

  9. Torch 两个矩形框重叠面积的计算 (IoU between tow bounding box)

    Torch 两个矩形框重叠面积的计算 (IoU between tow bounding box) function DecideOberlap(BBox_x1, BBox_y1, BBox_x2, ...

  10. [CodeForces - 919B] Perfect Number

    题目链接:http://codeforces.com/problemset/problem/919/B AC代码: #include<cstdio> using namespace std ...