使用基于ng cookie的ng类存储数据
Using ng-class based on ng-cookies stored data
我试图根据函数内部的条件使用ng类,但有时切换不起作用。我使用了$scope.getBookmarkIcon函数,这样即使在页面刷新后,我也可以用bookmarkIcon类选择ng类,但它不是工作属性。
$scope.bookmarks = $cookieStore.get('data_bookmark') ? $cookieStore.get('data_bookmark') : { items:[] };
console.log($scope.bookmarks);
$scope.saveBookmark = function(resortId) {
$scope.bookmarks.items.push({ id:resortId });
$cookieStore.put('data_bookmark',$scope.bookmarks);
var cookie = $cookieStore.get('data_bookmark');
console.log($scope.bookmarked);
console.log(cookie);
};
$scope.removeBookmark = function(resortId) {
var data = $scope.bookmarks.items;
for(var key in data) {
if(data[key].id===resortId) {
var index = Object.keys(data).indexOf(key);
$scope.bookmarks.items.splice(index, 1); break;
}
}
$cookieStore.put('data_bookmark',$scope.bookmarks);
var ncookie = $cookieStore.get('data_bookmark');
console.log($scope.bookmarked);
console.log(ncookie);
};
$scope.getBookmarkIcon = function(resortId)
{
$scope.bookmarked = false;
var dataList = $scope.bookmarks.items;
dataList.filter(function(item) {
if(item.id===resortId) {
$scope.bookmarked = true;
}
});
return $scope.bookmarked;
};
}]);
以下是我迄今为止的尝试:http://plnkr.co/edit/raZeNb9FdCtfsf6FanU5?p=preview
最后我解决了我的问题,我想分享。
以下是完整的来源:
http://plnkr.co/edit/9NZHjAuEvC6wVN7YE8Yh?p=preview
我用一个切换功能简化了它,而不是两个功能,一个用于添加书签,另一个用于删除书签。
我用初始化$scope.bookmarked=false;
然后在html:中
<td class="ellipsis" ng-model="bookmarked" ng-class="{'bookmarkIcon':getBookmarkIcon(item)}">
<a ng-click="bookmarked=!bookmarked; toggleBookmark(item);"
href="javascript:void(0);" title="{{(getBookmarkIcon(item))?'Remove
bookmark':'Bookmark this area'}}">{{item}}
</a>
</td>
然后,我将getBookmarkIcon(item)保留在模型之外,根据cookie中存储的值,只返回true或false。
var app = angular.module('myCookieBasedBookmark', ['ngCookies']);
app.controller('homeController', ['$cookieStore', '$cookies', '$scope', function($cookieStore, $cookies, $scope) {
$scope.bookmarked = false;
$scope.bookmarks = $cookieStore.get('data_bookmark') ? $cookieStore.get('data_bookmark') : { items:[] };
console.log($scope.bookmarks);
$scope.toggleBookmark = function(resortId) {
var data = $scope.bookmarks.items;
var found = false;
for(var key in data) {
if(data[key].id===resortId) {
var index = Object.keys(data).indexOf(key);
$scope.bookmarks.items.splice(index, 1); found = true; break;
}
}
if(!found){
$scope.bookmarks.items.push({ id:resortId });
}
$cookieStore.put('data_bookmark',$scope.bookmarks);
var cookie = $cookieStore.get('data_bookmark');
console.log(cookie);
};
$scope.getBookmarkIcon = function(resortId) {
var found = false;
var dataList = $scope.bookmarks.items;
dataList.filter(function(item) {
if(item.id===resortId) {
found = true;
}
});
return found;
};
}]);
相关文章:
- 我们可以将ng绑定值存储到php字符串中吗
- 根据本地存储中的列表过滤 ng-repeat
- 角度:使用 ng-click 自动填充/更改存储在 ng-grid 中的数据
- ng存储和原型
- 将 Json 文件存储在 AngularJS 变量中,以便与“ng-repeat”一起使用
- 将用户选择的多个单选按钮选项存储在使用 ng-repeat(s)构建的角度 js 中
- 如何在 meanJS 中存储 ng-repeat 数组表单数据
- 使用基于ng cookie的ng类存储数据
- 使用存储的颜色设置ng中的动态背景颜色重复
- ng绑定但存储内部值
- 使用本地存储连接器时,StrongLoop中的ng-lb命令失败
- 如何将ng repeat与存储在localStorage中的JSON文件一起使用
- 将函数表达式存储在angularjs指令的link函数中,并通过ng-click使用它
- Ng-src不能用于本地存储的图像
- 将html元素存储在object中,然后等待ng-include include模板
- AngularJS -将ng-model绑定到一个名称存储在另一个变量中的变量
- 检索本地存储并用于ng重复
- Angularjs-表示存储在$scope/model中的html和ng标记的指令
- 如何在angularjs中存储复选框的有效ng更改事件
- Angular将ng-repeat输入值存储到模型中