【发布时间】:2016-03-26 02:44:06
【问题描述】:
我将对象推送到$localStorage 数组以实现持久性。我还在添加/删除对象之前检查此数组以查看对象是否存在(如果存在,它应该splice,如果不存在,那么它将push)。
当我刷新我的页面时,从$localStorage 返回的数据似乎与预刷新时的数据不同,因为我的检查功能不起作用,尽管它在检查时看起来完全一样。
被推送的对象的结构如下:
{
"createdAt": "2015-04-24T10:21:21.649Z",
"difficulty": "Hard",
"exerciseDescription": "Lie on your back on a bench and take hold",
"exerciseID": "3101",
"exerciseName": "Bench Press",
"images": [8679, 8680, 8682],
"tags": ["Barbell", "Horizontal Flexion", "Extension", "Strength", "Chest", "Triceps", "Shoulder", "Elbow, Wrist & Hand"],
"updatedAt": "2015-09-09T20:14:59.681Z",
"words": ["bench", "press", "chest"],
"objectID": "ak6t7ukQdY",
"_highlightResult": {
"exerciseName": {
"value": "Bench Press",
"matchLevel": "none",
"matchedWords": []
}
}
}
检查对象是否存在(切换添加/删除)
$scope.addExerciseToProgramme = function(exercise) {
if (!$localStorage.Programme) {
$localStorage.Programme = [];
}
var index = $localStorage.Programme.indexOf(exercise);
if (index > -1) {
$localStorage.Programme.splice(index, 1);
} else {
$localStorage.Programme.push(exercise);
}
}
查看/加载$localStorage的功能
$scope.$watch(function() {
return $localStorage.Programme
}, function(programme) {
$scope.programme = programme;
});
ng-class 检查锻炼是否在计划中
<i class="exercise-add-indicator ion-ios-checkmark-outline" ng-class="{'orange': programme.indexOf(exercise) > -1}"></i>
问题
这样做有两个问题:
刷新后,
ng-class不会根据我的$scope.programme的内容有条件地添加类addExerciseToProgramme函数不遵守indexOf检查,无论如何都会将运动对象推送到数组中!
【问题讨论】:
-
你能生成你的代码的jsFiddle吗?
标签: javascript arrays angularjs local-storage