您需要一個服務來注入每個控制器或用於統一訪問的$ rootScope。我正在做一個角度的應用程序相同的事情。這是我的版本,讓你開始。你看他的代碼中使用Authutils服務是http://bitwiseshiftleft.github.io/sjcl/斯坦福大學的Javascript加密庫的實現安全的層添加到存儲資源,因爲它們很容易看到與瀏覽器的調試工具:
angular.module('myApp').service('Dataservice', [
'Authutils',
function Dataservice(Authutils) {
var _test = [1, 2, 3];
var hasStorage = function() {
if (Modernizr.localstorage) {
return true;
} else {
return false;
}
};
var _get = function(key, make, init_data) {
var out = [];
var create = typeof make !== "undefined" ? make : false;
var data = typeof init_data !== "undefined" ? init_data : false;
if (hasStorage()) {
var sval = localStorage.getItem(key);
if (!!sval) {
try {
sval = Authutils.decrypt(sval);
out = JSON.parse(sval);
} catch (e) {
}
} else {
if (create) {
if (data) {
data = Authutils.encrypt(data);
_set(key, data);
} else {
_set(key, []);
}
}
}
}
return out;
};
var _set = function(key, value) {
if (hasStorage()) {
var subject = JSON.stringify(value);
localStorage.setItem(key, Authutils.encrypt(subject));
return true;
}
return false;
};
var _drop = function(key) {
if (hasStorage()) {
localStorage.removeItem(key);
return true;
}
return false;
};
var _nuke = function() {
if (hasStorage()) {
localStorage.clear();
return true;
}
return false;
};
var _push = function(key, value) {
var out = [];
if (hasStorage()) {
var current = JSON.parse(localStorage.getItem(key));
if (!!current) {
current.push(value);
_set(key, current);
}
}
return out;
};
return {
get: function(key, make, init_data) {
return _get(key, make, init_data);
},
set: function(key, value) {
_set(key, value);
},
push: function(key, value) {
_push(key, value);
},
trash: function(key) {
_cut(key);
},
nuke: function() {
_nuke();
},
test: function() {
return _test;
}
};
}
]);
你嘗試更換' sessionStorage'與'localStorage'?兩者都使用相同的[存儲API](http://www.w3.org/TR/webstorage/#storage)。 – 2014-10-28 02:00:18
我沒試過。但它的工作。感覺很愚蠢。我有角度本地存儲的側軌。謝謝 – GeekOnGadgets 2014-10-28 02:08:48
如果你通過其他標籤訪問,你應該使用localStorage使用sessionStorage訪問只在同一個標籤..但我想知道爲什麼你必須顯示其他標籤,而使用angularJS? – 2014-10-28 02:09:12