我在我的項目中使用了最喜歡的按鈕。這裏是一個demo將ID保存到本地存儲中,並使用按鈕angularjs
的script.js
angular.module("MyApp",[]);
service.js
angular
.module("MyApp")
.service("FavoriteService",[function(){
//Favorites functions
this.isLocalStorageEnable = function() {
if(typeof (Storage) !== "undefined"){
return true;
}
else{
return false;
}
};
this.isFavorite = function(scope){
var fav = localStorage.getItem(scope.id);
return fav === "1";
};
this.setFav = function(scope){
localStorage.setItem(scope.id,"1");
};
this.deleteFav = function(scope){
localStorage.removeItem(scope.id);
};
}]);
directive.js
angular.module("MyApp").directive("albumDirective", ["FavoriteService", function(FavoriteService) {
return {
restrict: "AE",
templateUrl: "AlbumDirective.html",
replace: true,
scope: {
id: "=albumId"
},
link: function(scope)
{
scope.isLocalStorageEnable = FavoriteService.isLocalStorageEnable;
scope.isFavorite = FavoriteService.isFavorite(scope);
scope.markAs = function(type) {
switch(type) {
case true :
FavoriteService.setFav(scope);
break;
case false :
FavoriteService.deleteFav(scope);
break;
}
scope.isFavorite = type;
}
}
};
}]);
AlbumDirective.html
<button ng-click="markAs(!isFavorite)" ><i class="fa" ng-class="{'fa-heart' : isFavorite , 'fa-heart-o' : !isFavorite }"></i></button>
Itempage.html
<album-directive album-id="1"></album-directive>
當我點擊按鈕心臟在ItemPage.html項目1按鈕被激活,當我再次導航到ItemPage.html項目2按鈕已經active.In每個項目頁面我都有{{object.itemid}}。我想將itemid添加到本地存儲中,因此只有當按鈕按下每個項目時,按鈕纔會處於活動狀態。我從來沒有使用本地storage.Any建議?謝謝先進。
什麼是項目ID爲ITEM2?您的示例似乎工作正常,只要每個項目具有不同的ID,就不應該有任何問題 – S4beR
項目1有itemid = 1,item1有itemid = 2當我在itempage並查看項目1並單擊按鈕將item1設置爲收藏即可使用。但是,當我回到ang時,請轉到itempage.html以查看item2,此按鈕已處於活動狀態。所以所有項目只有一個狀態(活動或不活動)。我需要每個項目的一個狀態。 –