起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4874|回复: 10

[结贴] 关于加入购物车的问题

[复制链接]

3

主题

12

帖子

40

积分

新手上路

Rank: 1

积分
40
QQ
发表于 2017-8-15 15:07:44 | 显示全部楼层 |阅读模式
我的首页是index.w下的main.w,然后购物车页是用windowContainer链接的carts.w,列表页是list.w,详情页是details.w。
我在index.w里面设置了一个普通的data是cartData,并且在modelLoad里面定义了window.data = this.comp("cartData"); 然后我在首页、列表页和详情页里都有加入购物车的按钮。现在的情况是我在首页和列表页点击按钮购物车里有产品,但是点击一个产品显示正常,点击多个产品的时候显示的产品个数是没问题的但是显示的内容总是最后一次点击的产品
在index.w里面
Model.prototype.modelLoad = function(event){
                window.data = this.comp("cartData");
                justep.Shell.showPage("main");
        };

在首页、列表页和详情页里面都是:
//加入购物车
        Model.prototype.imageCartClick = function(event){
                var row = event.bindingContext.$object;
                var cartData = window.data;
                cartData.newData({
                        defaultValues : [ {
                                "goods_id" : row.val("goods_id"),//商品ID
                                "goods_name" : row.val("goods_name"),//商品名称
                                "shop_price" : row.val("shop_price"),//商品现价
                                "market_price" : row.val("market_price"),//商品原价
                                "goods_thumb" : row.val("goods_thumb"),//商品图片
                                "gCount" : 1//商品数量
                        } ]
                });       
        };

详情页的时候报错显示:row.val is not a function

购物车页都是用output显示的window.data.ref("goods_name"),list连接的也是window.data
首页、列表页和详情页都有一个bassdata是goodsData
我刚接触WeX5时间不长,还是个小白,请各位大神帮忙解答
发表于 2017-8-16 11:34:51 | 显示全部楼层
显示的内容总是最后一次点击的产品   
data组件当前选中行是什么??那么详细页就显示什么行的数据!
本来就是这样的! 选中哪一行,就显示哪一行的!  
详细页默认就是显示当前行的!

如果你想切换行,请调用data组件的API方法!比如 data.next() 切换下一行!

2.自己debugger调试跟一下代码! 是执行哪儿报错的??
row.val is not a function
表示当前行对象是不存在的! 可能data组件没有当前行导致的!

qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

12

帖子

40

积分

新手上路

Rank: 1

积分
40
QQ
 楼主| 发表于 2017-8-17 10:51:25 | 显示全部楼层
liangyongfei 发表于 2017-8-16 11:34
显示的内容总是最后一次点击的产品   
data组件当前选中行是什么??那么详细页就显示什么行的数据 ...

1.我在详情页的显示没问题,就是购物车里显示的不行。就是比如我在首页点击A商品加入购物车,购物车显示A商品,然后我在首页又点击B商品加入购物车,正常的情况购物车应该显示A和B两种商品,但是我现在显示有两个B商品,同样我在列表页再点击一个C商品加入购物车的话,购物车就显示三个C商品了
2.详情页的话,我没用list来显示,和这个有关系吗?我是参照记一笔的方法做的,用的windowDialog传参接收的,如果用list的话显示不出来,是为什么呢?
回复 支持 反对

使用道具 举报

发表于 2017-8-17 16:24:09 | 显示全部楼层
众星天长 发表于 2017-8-17 10:51
1.我在详情页的显示没问题,就是购物车里显示的不行。就是比如我在首页点击A商品加入购物车,购物车显示A ...

1.list绑定数据的格式有问题
http://docs.wex5.com/wex5-ui-question-list-2036/

2. 详情页直接绑定data就行!data切换在哪一行!就显示哪一行的数据!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

12

帖子

40

积分

新手上路

Rank: 1

积分
40
QQ
 楼主| 发表于 2017-8-17 18:49:19 | 显示全部楼层
liangyongfei 发表于 2017-8-17 16:24
1.list绑定数据的格式有问题
http://docs.wex5.com/wex5-ui-question-list-2036/

1.我购物车页里没有data,list是绑定的window.data.ref("#"),然后我改成window.data.val("#"),也是不行。
我需要在购物车页里也加一个data吗,这个data我在index里面定义了,还要再加吗?
2.详情页的话,你的意思是不是说,用data就是相当于类似购物车似的新增一个,就不需要从bassdata里面调用了是吗?因为我bassdata连接的是自己的数据库
回复 支持 反对

使用道具 举报

发表于 2017-8-18 09:47:19 | 显示全部楼层
众星天长 发表于 2017-8-17 18:49
1.我购物车页里没有data,list是绑定的window.data.ref("#"),然后我改成window.data.val("#"),也是不行 ...

1.list绑定data组件应该是  window.data
显示字段绑定的时候!直接用  ref("字段")  或者 val("字段")   就可以!

这种用法多个页面绑定同一个data  , 有耦合度,建议是每个页面放一个data组件的!
http://docs.wex5.com/wex5-ui-question-list-2166

2. data 和 baasData 都可以,都是数据源!只要有数据就能显示!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

12

帖子

40

积分

新手上路

Rank: 1

积分
40
QQ
 楼主| 发表于 2017-8-18 15:07:16 | 显示全部楼层
liangyongfei 发表于 2017-8-18 09:47
1.list绑定data组件应该是  window.data
显示字段绑定的时候!直接用  ref("字段")  或者 val("字段")    ...

谢谢,解决了,可以显示出来了都。
然后现在还有个问题,就是我的商品前面都有一个checkbox,然后我传过去的时候是设置的checkedValue为1,然后我在页面的最下面加了一个output来显示所有商品的合计价钱,但是我发现checkbox选中与否对合计价钱没有影响,我希望checkedValue为1时,可以把这个商品的价格加上,为0时不加。因为这个output是单独写的不在list里面,所以我用的是window.data.sum("gMoney"),这样可以显示合计价格,但是好像和checkbox没有关系,我应该怎么写呢?我开始在bind-text里面写if()语句但是没有用,这个if()应该怎么写呢?
回复 支持 反对

使用道具 举报

发表于 2017-8-18 16:02:53 | 显示全部楼层
众星天长 发表于 2017-8-18 15:07
谢谢,解决了,可以显示出来了都。
然后现在还有个问题,就是我的商品前面都有一个checkbox,然后我传过 ...

checkbox bind-ref 绑定一个data 字段 int类型就可以!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

3

主题

12

帖子

40

积分

新手上路

Rank: 1

积分
40
QQ
 楼主| 发表于 2017-8-18 16:29:35 | 显示全部楼层
liangyongfei 发表于 2017-8-18 16:02
checkbox bind-ref 绑定一个data 字段 int类型就可以!

我在data里面添加了一个字段gCheck,在购物车页已经用bind-ref绑定了ref("gCheck")。设定checkedValue值为1

//加入购物车
        Model.prototype.imageCartClick = function(event){
                var row = event.bindingContext.$object;
                var cartData = window.data;
                cartData.newData({
                        defaultValues : [ {
                                "goods_id" : row.val("goods_id"),//商品ID
                                "goods_name" : row.val("goods_name"),//商品名称
                                "shop_price" : row.val("shop_price"),//商品现价
                                "market_price" : row.val("market_price"),//商品原价
                                "goods_thumb" : row.val("goods_thumb"),//商品图片
                                "gCount" : 1,//商品数量
                                "gCheck" : 1//选择
                        } ]
                });       
        };

这样传过来显示的是选中的状态,就是比如我如果点击了2个商品,合计价钱是100,然后我把其中一个的checkbox取消选中,然后合计价钱还是100。我的合计价格没在list里面,我应该怎么写呢?
回复 支持 反对

使用道具 举报

发表于 2017-8-18 16:59:22 | 显示全部楼层
众星天长 发表于 2017-8-18 16:29
我在data里面添加了一个字段gCheck,在购物车页已经用bind-ref绑定了ref("gCheck")。设定checkedValue值 ...

合计价格自己计算啊!
data.sum 就可以计算
如果有条件,可以这样写,比如
  1. //统计mainData中fName姓“李”的年龄fAge合计
  2.     var sum = this.comp('mainData').sum('fAge',function(ev){
  3.             var v = ev.source.getValue('fName',ev.row);
  4.             return v.indexOf('李')==0;
  5.     });
复制代码


请自己查询data组件的API 文档!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-24 07:57 , Processed in 0.075314 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表