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. listen()函数中backlog参数分析

    实例分析1 将服务器端的listen函数backlog设置为2,用20个客户端与服务器建立连接,查看连接的建立情况. 服务器代码: #include <stdio.h> #include& ...

  2. 利用JQuery Mobile开发web app

    什么是web app web app 是基于web的应用程序,是针对移动设备优化后的web站点,它具有 开发成本低——采用web开发技术,不需要考虑跨平台以及底层适配问题: 升级简单——不需要通知用户 ...

  3. linux 实时显示网速bash

    执行方法先授权再运行 chmod +x shi.sh脚本+网卡名称 ./shi.sh ens33 #!/bin/bash while [ "1" ] do eth=$1 RXpre ...

  4. ARM的栈指令(转)

    ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...

  5. opencv学习之路(8)、基本图像运算——加减与或

    一.图像加法 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...

  6. 牛客网数据库SQL实战(21-25)

    21.查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序CREATE TABLE `employees` (`emp_no` i ...

  7. 【python003-变量】

    变量 一.在使用变量之前,需要先对其进行赋值 二.变量命名的规则:可以包含字母,数字,下划线,但是不能以数字开头 三.字符串: 1.引号内的一切东西 2.python的字符串是要在两边加上引号,对于单 ...

  8. 如何查看sonarqube的版本

    Server Logs & System Info The System Info page is found at Administration > System. It gives ...

  9. 3. Elements of a Test Plan

    https://jmeter.apache.org/usermanual/test_plan.html This section describes the different parts of a ...

  10. R语言 格式化数字

    x = 1111111234.6547389758965789345 y = formatC(x, digits = 8, format = "f") # [1] "11 ...