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,
最新文章
- SQL SERVER 多数据导入
- TFS下的源代码控制
- 【洛谷 p3368】模板-树状数组 2(数据结构)
- 使用isInEditMode解决可视化编辑器无法识别自定义控件的问题
- MongoDB 快速入门--高级
- mongnodb 启动脚本
- HTML基础(1) 全局架构标签,特殊字符
- [帖子收集]环境光遮蔽(Ambient Occlusion)
- Entity Framework技巧系列之二 - Tip 6 - 8
- ML笔记:Classification: Probabilistic Generative Model
- 在Windows Service 2012上安装IIS 8.0 IIS 6
- java拦截处理System.exit(0)
- 设置DataGridView中表头颜色
- [No0000189]改善C#程序的建议10:用Parallel简化Task
- 基于qml创建最简单的android机图像采集程序
- CentOS7安装OpenStack(Rocky版)-04.安装Nova计算服务(控制节点)
- hdu 3613 扩展kmp+回文串
- 分区默认segment大小变化(64k&mdash;>;8M)
- 新浪OAuth网络登录,请求access_token时遇到21323的错误
- mysql有关问题之:the security settings could not be applied to