AngularJS之ionic 框架下實(shí)現(xiàn) Localstorage本地存儲(chǔ)
前言:
我們前臺(tái)用的是ionic+AngularJS,做的是混合模式移動(dòng)應(yīng)用。最近有一個(gè)需求是,我在頁(yè)面A上面滑動(dòng)的時(shí)候,跳入頁(yè)面B,頁(yè)面B需要加載頁(yè)面A的數(shù)據(jù),這樣的頁(yè)面?zhèn)髦等绾螌?shí)現(xiàn)呢?那就需要用到LocalStorage本地存儲(chǔ)了。
Ionic
Ionic是目前最有潛力的一款HTML5手機(jī)應(yīng)用開(kāi)發(fā)框架。通過(guò)SASS構(gòu)架應(yīng)用程序,他提供了很多UI控件來(lái)幫助開(kāi)發(fā)者開(kāi)發(fā)強(qiáng)大的應(yīng)用。加上angularjs可以讓ionic應(yīng)用體驗(yàn)度增強(qiáng)。代碼也非常簡(jiǎn)單。angularjs可以提供數(shù)據(jù)的雙向綁定,使用它成為 Web 和移動(dòng)開(kāi)發(fā)者的共同選擇。
angularjs
AngularJS建立在JavaScript基礎(chǔ)之上,而后者正是目前世界上應(yīng)用范圍最廣、靈活程度最高的編程語(yǔ)言之一。AngularJS能夠?yàn)槭褂谜咛峁┮惶淄暾能浖?,用于基于前端的?yīng)用程序。對(duì)于Web開(kāi)發(fā)人員來(lái)說(shuō),AngularJS以框架形式將所有復(fù)雜性元素加以打包,從而保證使用者只需要直接接觸那些最易于實(shí)現(xiàn)的功能。更多的介紹可以看我之前的博客。
在客戶端存儲(chǔ)數(shù)據(jù)(localStorage &sessionStorage )
Html5 提供了兩種在客戶端存儲(chǔ)數(shù)據(jù)的新方法:
- localStorage - 沒(méi)有時(shí)間限制的數(shù)據(jù)存儲(chǔ)
- sessionStorage - 針對(duì)一個(gè) session 的數(shù)據(jù)存儲(chǔ)
之前,這些都是由 cookie 完成的。但是 cookie 不適合大量數(shù)據(jù)的存儲(chǔ),因?yàn)樗鼈冇擅總€(gè)對(duì)服務(wù)器的請(qǐng)求來(lái)傳遞,這使得 cookie 速度很慢而且效率也不高。在 HTML5 中,數(shù)據(jù)不是由每個(gè)服務(wù)器請(qǐng)求傳遞的,而是只有在請(qǐng)求時(shí)使用數(shù)據(jù)。它使在不影響網(wǎng)站性能的情況下存儲(chǔ)大量數(shù)據(jù)成為可能。對(duì)于不同的網(wǎng)站,數(shù)據(jù)存儲(chǔ)于不同的區(qū)域,并且一個(gè)網(wǎng)站只能訪問(wèn)其自身的數(shù)據(jù)。
localStorage本地存儲(chǔ)
相對(duì)于上述本地存儲(chǔ)方案,localStorage有自身的優(yōu)點(diǎn):容量大、易用、強(qiáng)大、原生支持;缺點(diǎn)是兼容性差些(chrome, safari, firefox,IE 9,IE8都支持 localStorage,主要是IE8以下版本不支持)、安全性也差些(所以請(qǐng)勿使用localStorage保存敏感信息)。 localStorage保存的數(shù)據(jù),一般情況下是永久保存的,也就是說(shuō)只要采用localstorage保存信息,數(shù)據(jù)便一直存儲(chǔ)在用戶的客戶端中。即使用戶關(guān)閉當(dāng)前web瀏覽器后重新啟動(dòng),數(shù)據(jù)讓然存在。知道用戶或程序明確制定刪除,數(shù)據(jù)的生命周期才會(huì)結(jié)束。在安全性方面,localstorage是域內(nèi)安全的,即localstorage是基于域的。任何在該域內(nèi)的所有頁(yè)面,都可以訪問(wèn)localstorage數(shù)據(jù)。
localStorage四種方法:
- localStorage.getItem(key):獲取指定key本地存儲(chǔ)的值
- localStorage.setItem(key,value):將value存儲(chǔ)到key字段
- localStorage.removeItem(key):刪除指定key本地存儲(chǔ)的值
- localStorage.length是localStorage的項(xiàng)目數(shù)
項(xiàng)目實(shí)戰(zhàn):
evaluationTaskCtrl controller.js
/*登陸controller*/ .controller('evaluationTaskCtrl', function($scope,$state,evaluationTaskService,studentEvaluateService) { //右滑動(dòng)跳入卷子界面-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"); }; }
頁(yè)面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> <!--內(nèi)容div--> </ion-list > </ion-content >
在頁(yè)面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")+"】";
在頁(yè)面B上面顯示:
<!-- 課程教師顯示 --> <h1 class="title" style="font-weight:bold;" ng-cloak>{{CourseName}} <span ng-bind="TeacherName"></span>
總結(jié):
最近接觸的都不能用經(jīng)驗(yàn)來(lái)解決,因?yàn)槭切率挛铮荒苁前俣攘?。后?lái)也可以模仿著自己寫(xiě)一寫(xiě),之前學(xué)到的理論知識(shí)也真正運(yùn)用了出來(lái)。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
自學(xué)實(shí)現(xiàn)angularjs依賴注入
這篇文章主要為大家詳細(xì)介紹了angularjs依賴注入的自己成果,如何實(shí)現(xiàn)angularjs依賴注入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12利用Ionic2 + angular4實(shí)現(xiàn)一個(gè)地區(qū)選擇組件
ionic是一個(gè)移動(dòng)端開(kāi)發(fā)框架,使用hybird技術(shù),只要使用前端開(kāi)發(fā)技術(shù)就可以開(kāi)發(fā)出電腦端,安卓端和ios端的站點(diǎn)程序。下面這篇文章主要給大家介紹了關(guān)于利用Ionic2 + angular4實(shí)現(xiàn)一個(gè)地區(qū)選擇組件的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07

AngularJs bootstrap搭載前臺(tái)框架——基礎(chǔ)頁(yè)面

AngularJS使用指令增強(qiáng)標(biāo)準(zhǔn)表單元素功能

Angularjs 創(chuàng)建可復(fù)用組件實(shí)例代碼

AngularJS基礎(chǔ) ng-readonly 指令簡(jiǎn)單示例

angularjs http與后臺(tái)交互的實(shí)現(xiàn)示例