如何在 angularjs 中从 cookie 中删除和编辑对象

How to remove and edit object from cookies in angularjs

本文关键字:删除 编辑 对象 cookie angularjs 中从      更新时间:2023-09-26

我在angularjs中从$cookies中删除和编辑cookie对象时遇到问题。我想开一家商店,我正在使用 putObject 函数将产品添加到全局变量$cookies(我没有使用 put,因为我有多个参数)。我想添加功能以从商店中删除和编辑产品,并从cookie中删除和编辑一个对象。请帮帮我!

这是我的代码片段(我想从"产品"cookie中删除/编辑对象):

app.controller('Store', ['$scope', '$cookies', 'x2js', '$http', 
    function($scope, $cookies, x2js, $http){
    this.products = $cookies.getObject('products');
    if(!this.products) {
        var self = this;
        $http.get('assets/xml/products.xml').success(function(data) {
            self.products = data.products.product;
            for(var i = 0; i < self.products.length; i++) {
                self.products[i].id = parseInt(self.products[i].id);
                self.products[i].netto = self.products[i].netto + '.00';
                self.products[i].tax = parseInt(self.products[i].tax);
                self.products[i].brutto = parseFloat(self.products[i].brutto);
                self.products[i].rating = parseInt(self.products[i].rating);
            };
        });
    }
    $scope.product = $cookies.getObject('product') || {};
    $scope.$watch('product', function() {
        $cookies.putObject('product', $scope.product);
    }, true);
    this.addProduct = function() {
        if(this.countCategories() >= 2) {
            if(this.validateForm()) {
                var product = {
                    id: this.products.length + 1,
                    name: $scope.product.name,
                    code: $scope.product.code,
                    image: $scope.product.image,
                    netto: this.intToFloat($scope.product.netto, 2),
                    tax: $scope.product.tax,
                    brutto: this.calculatePriceBr(),
                    rating: parseInt(this.ratingChecked()),
                    category: this.categoryChecked(),
                    option: this.optionChecked(),
                    selected: $scope.product.selected
                };
                this.products.push(product);
                $scope.product = {};
                $cookies.putObject('products', this.products);
                $('#product-add').modal('hide');
                return true;
            } else {
                return;
            }
        } else {
            return;
        }
    };
 })();

希望这就是你要找的。

我根据您的代码(简化)进行了一些测试:

var app = angular.module('myApp', ['ngCookies']);

app.controller('Store', Store);

Store.$inject = ['$scope', '$cookies', '$http'];
function Store($scope, $cookies, $http) {
  var vm = this;
  vm.products = [];
  vm.cart = [] ;
  vm.inCookie =[];
  $http.get('products.xml').success(function(data) {
    vm.products = data;
    for (var i = 0; i < vm.products.length; i++) {
      vm.products[i].id = parseInt(vm.products[i].id);
      vm.products[i].netto = vm.products[i].netto + '.00';
      vm.products[i].tax = parseInt(vm.products[i].tax);
      vm.products[i].brutto = parseFloat(vm.products[i].brutto);
      vm.products[i].rating = parseInt(vm.products[i].rating);
    };
  });

  this.addProduct = function(row) {

    vm.cart.push(row);

    $cookies.put('cart', JSON.stringify(vm.cart));
    vm.inCookie = JSON.parse($cookies.get('cart'));
  };
}

您可以在此处查看如何从 Cookie 中添加和检索数据。

在这个 plunkr 中,您可以看到它正在工作。

https://plnkr.co/edit/ew1ePjzbMxjAqtgx8hzq?p=preview

希望这有帮助。

问候!