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

时间:2016-03-18 20:08:59

标签: javascript angularjs cookies

我在使用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;
        }
    };
 })();

1 个答案:

答案 0 :(得分:0)

希望这就是你要找的东西。

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

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

希望这有帮助。

问候!