Ich benutze einen Favoriten-Button zu meinem Projekt. Hier ist ein demoSpeichere die ID im lokalen Speicher mit der Taste 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>
Wenn ich für das Herz klicken in ItemPage.html für Punkt 1 der Button aktiv und wenn ich wieder für Artikel zu ItemPage.html Ebene 2 die Taste ist bereits active.In Jede Artikelseite habe ich {{object.itemid}}. Ich möchte die Artikel-ID zum lokalen Speicher hinzufügen, so dass die Schaltfläche nur aktiv ist, wenn die Schaltfläche für jeden Artikel gedrückt wird. Ich habe nie lokalen Speicher verwendet. Irgendwelche Vorschläge? Vielen Dank im Voraus.
was ist der Artikel-ID für item2? Ihr Beispiel scheint gut zu funktionieren und es sollte kein Problem geben, solange jeder Artikel eine andere ID hat. – S4beR
Der Artikel 1 hat itemid = 1, der item1 hat itemid = 2 wenn ich auf der Artikelseite bin und den Artikel 1 anschaue und auf den Link klicke Taste, um das Element1 zum Favoriten zu setzen, ist Arbeit. Wenn ich jedoch zurück gehe, gehe zu itempage.html, um den item2 zu sehen, der Button ist bereits aktiv. Es gibt also nur einen Status für alle Elemente (aktiv oder nicht). Ich brauche einen Zustand für jeden Gegenstand. –