2014-09-26 27 views
0
app.factory('theService', function(){ 
    var member = { 
     myValue: false, 
    }; 
    return myValue; 
}); 

我上面的代碼,我想改變它來存儲並給從DOM類似下面的Angular.js:工廠在頁面刷新之間存儲值在DOM中?

app.factory('theService', function(){ 
    var member = { 
     myValue: $window.sessionStorage["myValue"], 
    }; 
    return myValue; 
}); 

有效地使布爾myvalue的頁面刷新之間持久的存儲。任何其他的想法如何在Angular中解決這個問題?我在auth服務中使用它。

回答

1

您不應該在服務中使用$ window。因爲這使得測試服務非常困難。相反,您可以檢索控制器中的值,然後將其存儲在服務中。

而且你不應該基於此MDN頁:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage

建議使用setItem()getItem功能從sessionStorage訪問值:

myValue: $window.sessionStorage.getItem("myValue"), 
+1

或者更好,使用[現有的模塊(http://stackoverflow.com/q/19304435/2057033)! – Blackhole 2014-09-26 10:59:52

+1

或使用[angular-cache](http://angular-data.pseudobry.com/documentation/guide/angular-cache/configure):> – naeramarth7 2014-09-26 11:02:03

+0

如何在不同的控制器之間執行此操作?例如http://stackoverflow.com/questions/26097671/access-angular-module-via-service-in-rootscope – nottinhill 2014-09-29 12:19:32