Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
N
ngstorage
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Custom Issue Tracker
Custom Issue Tracker
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
angularjs
ngstorage
Commits
240648e6
Commit
240648e6
authored
Aug 03, 2018
by
bingchuan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[dev] version 0.3.0
parents
Pipeline
#70
failed with stages
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
123 additions
and
0 deletions
+123
-0
bower.json
bower.json
+20
-0
ngStorage.js
ngStorage.js
+103
-0
No files found.
bower.json
0 → 100644
View file @
240648e6
{
"name"
:
"ngstorage"
,
"main"
:
"./ngStorage.js"
,
"keywords"
:
[
"angular"
,
"cookie"
,
"storage"
,
"local"
,
"localstorage"
,
"session"
,
"sessionstorage"
],
"dependencies"
:
{
"angular"
:
">=1.0.8"
},
"devDependencies"
:
{
"angular-mocks"
:
">=1.0.8"
,
"chai"
:
"~1.8.1"
}
}
ngStorage.js
0 → 100644
View file @
240648e6
'use strict'
;
(
function
()
{
/**
* @ngdoc overview
* @name ngStorage
*/
angular
.
module
(
'ngStorage'
,
[]).
/**
* @ngdoc object
* @name ngStorage.$localStorage
* @requires $rootScope
* @requires $window
*/
factory
(
'$localStorage'
,
_storageFactory
(
'localStorage'
)).
/**
* @ngdoc object
* @name ngStorage.$sessionStorage
* @requires $rootScope
* @requires $window
*/
factory
(
'$sessionStorage'
,
_storageFactory
(
'sessionStorage'
));
function
_storageFactory
(
storageType
)
{
return
[
'$rootScope'
,
'$window'
,
function
(
$rootScope
,
$window
){
// #9: Assign a placeholder object if Web Storage is unavailable to prevent breaking the entire AngularJS app
var
webStorage
=
$window
[
storageType
]
||
(
console
.
warn
(
'This browser does not support Web Storage!'
),
{}),
$storage
=
{
$default
:
function
(
items
)
{
for
(
var
k
in
items
)
{
angular
.
isDefined
(
$storage
[
k
])
||
(
$storage
[
k
]
=
items
[
k
]);
}
return
$storage
;
},
$reset
:
function
(
items
)
{
for
(
var
k
in
$storage
)
{
'$'
===
k
[
0
]
||
delete
$storage
[
k
];
}
return
$storage
.
$default
(
items
);
}
},
_last$storage
,
_debounce
;
for
(
var
i
=
0
,
k
;
i
<
webStorage
.
length
;
i
++
)
{
// #8, #10: `webStorage.key(i)` may be an empty string (or throw an exception in IE9 if `webStorage` is empty)
(
k
=
webStorage
.
key
(
i
))
&&
'ngStorage-'
===
k
.
slice
(
0
,
10
)
&&
(
$storage
[
k
.
slice
(
10
)]
=
angular
.
fromJson
(
webStorage
.
getItem
(
k
)));
}
_last$storage
=
angular
.
copy
(
$storage
);
$rootScope
.
$watch
(
function
()
{
_debounce
||
(
_debounce
=
setTimeout
(
function
()
{
_debounce
=
null
;
if
(
!
angular
.
equals
(
$storage
,
_last$storage
))
{
angular
.
forEach
(
$storage
,
function
(
v
,
k
)
{
angular
.
isDefined
(
v
)
&&
'$'
!==
k
[
0
]
&&
webStorage
.
setItem
(
'ngStorage-'
+
k
,
angular
.
toJson
(
v
));
delete
_last$storage
[
k
];
});
for
(
var
k
in
_last$storage
)
{
webStorage
.
removeItem
(
'ngStorage-'
+
k
);
}
_last$storage
=
angular
.
copy
(
$storage
);
}
},
100
));
});
// #6: Use `$window.addEventListener` instead of `angular.element` to avoid the jQuery-specific `event.originalEvent`
'localStorage'
===
storageType
&&
$window
.
addEventListener
&&
$window
.
addEventListener
(
'storage'
,
function
(
event
)
{
if
(
'ngStorage-'
===
event
.
key
.
slice
(
0
,
10
))
{
event
.
newValue
?
$storage
[
event
.
key
.
slice
(
10
)]
=
angular
.
fromJson
(
event
.
newValue
)
:
delete
$storage
[
event
.
key
.
slice
(
10
)];
_last$storage
=
angular
.
copy
(
$storage
);
$rootScope
.
$apply
();
}
});
return
$storage
;
}
];
}
})();
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment