javascript - 刷新后使用 ng-click 在 html 中显示 session

标签 javascript angularjs express

我正在使用 express-session 来保存产品价格。一切似乎都很好,但我在 html 中显示 session 时遇到问题。例如,如果我在 session 中有 2 个产品,我添加下一个徽章将显示 3,当我刷新页面时徽章隐藏,然后添加下一个产品徽章将显示 4。如果我尝试像 {{ session.cart.totalQty }} 这样的显示 session ,这是行不通的。 main 是 controllerAs,cart 是添加产品、计算总价等功能,User.addToCart(...) 是服务功能返回 $http。问题是即使刷新页面,如何显示session 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>

Controller

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 });

        }
    })  

});

最佳答案

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

类似于:

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

当你加载你的 Controller 时,只需调用:

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

我建议你查看angular-local-storage将通过 Angular 方式管理 localStorage 的模块。

关于javascript - 刷新后使用 ng-click 在 html 中显示 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46257550/

相关文章:

javascript - 在循环中更改 setState

javascript - AngularJS 混淆

javascript - 防止多个upvote Angularjs

angularjs - 处理服务器重定向到 AngularJS 中的 Facebook 登录页面

javascript - 如何在 javascript 的类中用对象包装函数?

javascript - 在Javascript中,setTimeout中使用的变量范围是什么?

mongodb - Graphql 创建两个查询之间的关系。错误无法在初始化之前访问

javascript - Express.js 意外的 'GET' 到 '/json/version'

javascript - 如何创建使用前缀作为参数的自定义方法

node.js - 在 linux 上运行 node (express) 产生错误 : spawn EACCES