【问题标题】:Display session in html using ng-click after refresh刷新后使用 ng-click 在 html 中显示会话
【发布时间】:2017-09-16 19:12:47
【问题描述】:

我使用express-session 来保存产品价格。一切似乎都很好,但我在 html 中显示会话有问题。例如,如果我在会话中有 2 个产品,我添加下一个徽章将显示 3,当我刷新页面时,徽章是隐藏的,下一个添加下一个产品徽章将显示 4。如果我尝试像{{ session.cart.totalQty }} 这样的显示会话,这将不起作用。 main是controllerAs,cart是添加产品、统计总价等功能,User.addToCart(...)是返回$http的服务函数。问题是即使刷新页面如何显示会话totalQty

html

<sapn class="badge">{{totalQty}}</span>
<a data-target="#" ng-click="main.addCart(price)" class="btn btn-success btn-block">Add to cart</a>

控制器

app.addCart = function(product){
    User.addToCart($routeParams.id).then(function(data){ 
        $scope.totalQty = data.data.cart.totalQty;
    });
}

和 API

router.get('/add-to-cart/:id', function(req, res){
    var cart = new Cart(req.session.cart ? req.session.cart : {});
    Product.findById({ _id : req.params.id }, function(err, product){ 
        if(err) throw err
        if(!product){
            res.json({success:false, message: 'err'});
        } else {

            cart.add(product, product.id);
            req.session.cart = cart;
            res.json({ success:true, product: product, cart:cart });

        }
    })  

});

【问题讨论】:

  • 您想在页面刷新后获取旧徽章计数吗?
  • 是的,我想要旧徽章

标签: javascript angularjs express


【解决方案1】:

您可以在从服务器加载之前使用localStorage 存储徽章计数。

类似:

User.addToCart($routeParams.id).then(function(data){ 
    $scope.totalQty = data.data.cart.totalQty;
    localStorage.totalQty = $scope.totalQty;
});

当您加载控制器时,只需调用:

$scope.totalQty = localStorage.totalQty || 0;

我建议您检查angular-local-storage 模块,该模块将通过角度方式管理localStorage

【讨论】:

  • 谢谢你的帮助,我后面的下节课
  • 但是现在,如果我有 10 个徽章并清除会话并刷新页面,它会显示 10,而不是 0,然后单击显示 1
  • @V.R 您只需要使用本地存储反映会话数。我不知道你的确切项目行为,但它真的很简单:)
猜你喜欢
  • 1970-01-01
  • 2013-06-20
  • 2014-11-12
  • 2021-10-28
  • 2017-04-27
  • 2014-02-17
  • 2015-12-18
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多