繁体   English   中英

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

[英]How to remove and edit object from cookies in angularjs

我从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添加和检索数据。

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

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

希望这可以帮助。

问候!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM