AngularJS之ionic 框架下实现 Localstorage本地存储


Posted in Javascript onApril 22, 2017

前言:

我们前台用的是ionic+AngularJS,做的是混合模式移动应用。最近有一个需求是,我在页面A上面滑动的时候,跳入页面B,页面B需要加载页面A的数据,这样的页面传值如何实现呢?那就需要用到LocalStorage本地存储了。

AngularJS之ionic 框架下实现 Localstorage本地存储AngularJS之ionic 框架下实现 Localstorage本地存储 

Ionic

Ionic是目前最有潜力的一款HTML5手机应用开发框架。通过SASS构架应用程序,他提供了很多UI控件来帮助开发者开发强大的应用。加上angularjs可以让ionic应用体验度增强。代码也非常简单。angularjs可以提供数据的双向绑定,使用它成为 Web 和移动开发者的共同选择。

angularjs

AngularJS建立在JavaScript基础之上,而后者正是目前世界上应用范围最广、灵活程度最高的编程语言之一。AngularJS能够为使用者提供一套完整的软件包,用于基于前端的应用程序。对于Web开发人员来说,AngularJS以框架形式将所有复杂性元素加以打包,从而保证使用者只需要直接接触那些最易于实现的功能。更多的介绍可以看我之前的博客。

在客户端存储数据(localStorage &sessionStorage )

Html5 提供了两种在客户端存储数据的新方法:

  1. localStorage - 没有时间限制的数据存储
  2. sessionStorage - 针对一个 session 的数据存储

之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。在 HTML5 中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。对于不同的网站,数据存储于不同的区域,并且一个网站只能访问其自身的数据。

localStorage本地存储

相对于上述本地存储方案,localStorage有自身的优点:容量大、易用、强大、原生支持;缺点是兼容性差些(chrome,  safari, firefox,IE 9,IE8都支持 localStorage,主要是IE8以下版本不支持)、安全性也差些(所以请勿使用localStorage保存敏感信息)。 localStorage保存的数据,一般情况下是永久保存的,也就是说只要采用localstorage保存信息,数据便一直存储在用户的客户端中。即使用户关闭当前web浏览器后重新启动,数据让然存在。知道用户或程序明确制定删除,数据的生命周期才会结束。在安全性方面,localstorage是域内安全的,即localstorage是基于域的。任何在该域内的所有页面,都可以访问localstorage数据。

localStorage四种方法:

  1. localStorage.getItem(key):获取指定key本地存储的值
  2. localStorage.setItem(key,value):将value存储到key字段
  3. localStorage.removeItem(key):删除指定key本地存储的值
  4. localStorage.length是localStorage的项目数

项目实战:

evaluationTaskCtrl  controller.js

/*登陆controller*/ 
.controller('evaluationTaskCtrl', function($scope,$state,evaluationTaskService,studentEvaluateService) { 
  //右滑动跳入卷子界面-zzzzzz 
 $scope.onSwipeLeft = function(EvaluateCourse) { 
    localStorage.setItem("PaperId", EvaluateCourse[0].PaperId); 
     localStorage.setItem("TeacherName", EvaluateCourse[0].TeacherName); 
    localStorage.setItem("CourseID", EvaluateCourse[0].CourseID); 
    localStorage.setItem("TeacherID", EvaluateCourse[0].TeacherID); 
    localStorage.setItem("CourseName", EvaluateCourse[0].CourseName); 
    localStorage.setItem("CourseType",EvaluateCourse[0].CourseType); 
    $state.go("studentEvaluate"); 
    
 }; 
}

页面A.html

<ion-content class="has-header item-text-wrap" overflow-scroll='false'  on-swipe-left="onSwipeLeft(EvaluateCourse)" on-swipe-right="onSwipeRight()"> 
<ion-list > 
  <div class="item item-icon-left item-icon-right" ng-repeat="item in EvaluateCourse" ng-click="gotoStudentEvaluate(item)"> 
  <!--ng-click="gotoStudentEvaluate(item)"--> 
    <div >  
     
    <i class="icon ion-record " ng-style="{ color: color({{$index}}) }" style="font-size: 320%"> 
      <div style="font-size:45% ;font-weight:bold;position: relative;left: -42%;color:#FFFFFF"> 
       {{item.TeacherName|limitTo:1}} 
      </div> 
    </i>  
     
      <h2 style="position: relative;left:5%;font-weight:bold;">{{item.CourseName}}</h2>  
      <i class="ion-android-person" style="position: relative;left:5%;bottom:-3px;color: #AEEEEE"></i> 
      <p style="position: relative;left:5%;bottom:-2px;display: inline;color: #AAAAAA">{{item.TeacherName}}</p> 
    </div>    
</div> 
</div> 
<!--内容div--> 
</ion-list > 
</ion-content >

在页面B的controller.js里面获取值:

$scope.PaperId=localStorage.getItem("PaperId"); 
            $scope.TeacherName=localStorage.getItem("TeacherName"); 
            $scope.CourseID=localStorage.getItem("CourseID"); 
            $scope.TeacherID=localStorage.getItem("TeacherID"); 
            $scope.CourseName="【" +localStorage.getItem("CourseName")+"】";

在页面B上面显示:

<!-- 课程教师显示 --> 
    <h1 class="title" style="font-weight:bold;" ng-cloak>{{CourseName}} <span ng-bind="TeacherName"></span>

总结:

最近接触的都不能用经验来解决,因为是新事物,只能是百度了。后来也可以模仿着自己写一写,之前学到的理论知识也真正运用了出来。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
跟着JQuery API学Jquery 之三 筛选
Apr 09 Javascript
解析John Resig Simple JavaScript Inheritance代码
Dec 03 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
漫谈JS引擎的运行机制 你应该知道什么
Jun 15 Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 Javascript
jQuery利用sort对DOM元素进行排序操作
Nov 07 Javascript
vue2.0 和 animate.css的结合使用
Dec 12 Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 Javascript
jQuery插件jsonview展示json数据
May 26 jQuery
echarts实现获取datazoom的起始值(包括x轴和y轴)
Jul 20 Javascript
vue-路由精讲 二级路由和三级路由的作用
Aug 06 Javascript
关于vue中如何监听数组变化
Apr 28 Vue.js
vue拦截器Vue.http.interceptors.push使用详解
Apr 22 #Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
Apr 22 #Javascript
Vue.use源码分析
Apr 22 #Javascript
uploader秒传图片到服务器完整代码
Apr 22 #Javascript
Node.js中看JavaScript的引用
Apr 22 #Javascript
详解Angular中的自定义服务Service、Provider以及Factory
Apr 22 #Javascript
Ionic2调用本地SQlite实例
Apr 22 #Javascript
You might like
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
js 单引号 传递方法
2009/06/22 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
python调用staf自动化框架的方法
2018/12/26 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
深入理解Python异常处理的哲学
2019/02/01 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
罗技美国官网:Logitech美国
2020/01/22 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
财务管理专业应届毕业生求职信
2013/09/22 职场文书
读书活动实施方案
2014/03/10 职场文书
2014年信访工作总结
2014/11/17 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python