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 相关文章推荐
js隐藏与显示回到顶部按钮及window.onscroll事件应用
Jan 25 Javascript
jquery实现输入框动态增减的实例代码
Jul 14 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
使用原生JS实现弹出层特效
Dec 22 Javascript
javascript正则表达式基础知识入门
Apr 20 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
Apr 01 Javascript
Vue2 监听属性改变watch的实例代码
Aug 27 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
Oct 24 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
微信小程序人脸识别功能代码实例
May 07 Javascript
javascript实现一款好看的秒表计时器
Sep 05 Javascript
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
用PHP读取超大文件的实例代码
2012/04/01 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
php适配器模式简单应用示例
2019/10/23 PHP
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
js 操作符汇总
2014/11/08 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
浅谈js中的bind
2019/03/18 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
Python多线程和队列操作实例
2015/06/21 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Numpy掩码式数组详解
2018/04/17 Python
Django之路由层的实现
2019/09/09 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
用python实现学生管理系统
2020/07/24 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
一套中级Java程序员笔试题
2015/01/14 面试题
化学教师教学反思
2014/01/17 职场文书
教学实验楼管理制度
2014/02/01 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang