关于vue模版视图渲染

发布于 2022-09-02 23:53:05 字数 2325 浏览 46 评论 0

图片描述

图片描述

图片描述

各位帮忙看一下哈。
第一张图是我写的一个vue模版,
第二张图是列表渲染,里面的item数据会传到第一张图的模版里,
第三张图是我用props、data、computed做的尝试。
需求就是我在payForTable中改变Item.totalAmount的值,第一张图第二个p元素的内容能根据这个值对应改变。
现在问题是,这个值确实变了,通过最后一行打印出来看到的,可是页面渲染表现没有改变。
我尝试把props换成data,换成computed都不变,不知道什么原因,很急人。
求懂的人来解答一下,感谢。

图片描述

payForTable:function(e,i){

        var _target = $(e.currentTarget);
        var Item = this.msg;
        var _tableName = this.msg.tableName;
        var _price = this.msg.totalAmount;
        if(Item.status==2 && confirm("确定"+_tableName+"号桌,付款"+_price+"元吗?") ){
            var _data = {
                paymentChannel:0,
                tableId:Item.id,
                totalAmount:Item.totalAmount || 0,
                openId:"123"
            }
            console.log(JSON.stringify(_data),Item.status);
            $.ajax({
                type:"post",
                url:"http://dev.superchong.com:9999/restaurants/3/orders/"+ Item.orderId +"/payments",
                async:true,
                dataType:'json',
                contentType:"application/json",
                data:JSON.stringify(_data),
                success:function(callback){
                    console.log(callback);
                    Item.totalAmount = 0;
                    Item.status=0;
                    _target.removeClass('table_item_ordered');
                    _target.children('.item_totalAmount').html('');
                    alert("结单成功!")
                },
                error:function(err){
                    console.log(err);
                    if(JSON.parse(err.response).error=="Cannot pay for a paid or cancelled order!"){
                        alert("此单已经结过或取消,请勿重复提交")
                    } else {
                        alert("结单失败,请重试一次")
                    }
                }
            });
        } else {
            alert("此桌子不是已下单未付款状态,无法付款")
        }
    },
请输入代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苄①跕圉湢 2022-09-09 23:53:05

改寫了下,正常運行,組件要用 Vue.component('組件名稱', {...}) ,而不是 Vue.extend({...})

裡邊把 Ajax請求 改成用 setTimeout 模擬下,你再改回去就好了
jsFiddle

醉生梦死 2022-09-09 23:53:05

换成:msg.sync试试

十级心震 2022-09-09 23:53:05

为什么不直接写this.msg.totalAmount = 0;,这样不可以么?就别搞什么computed

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文