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

QQ登录

只需一步,快速开始

查看: 2988|回复: 14

[结贴] 关于仿淘宝购物车刷新数据的问题

[复制链接]

6

主题

30

帖子

106

积分

初级会员

Rank: 2

积分
106
QQ
发表于 2016-8-12 17:07:43 | 显示全部楼层 |阅读模式
本帖最后由 lsh902 于 2016-8-12 17:09 编辑

关于仿淘宝购物车刷新数据的问题,Mysql创建购物车数据表,插入测试数据,
car0.png
detail页面NewData方法新增数据,saveData保存数据,
car1.png car2.png
数据库新增数据正确,
car3.png
但是点击detail页面上的购物车按钮,跳转到购物车页面,新增的数据并没有加载进来,
car4.png
经过调试只有按F5键刷新数据之后,新增的数据才能添加进来,购物车页面用modelParamsReceive接收参数,刷新数据,数据组件autoload和autonew都设置成了true。
car5.png car6.png
Detail页面使用了传参。
    Model.prototype.shoppingCartBtnClick = function(event){
                /*
                1、切换到购物车页面
                */
                justep.Shell.fireEvent("onShoppingContent","USER");
                justep.Shell.showMainPage();
        };
        
请高人指点一下,如何能detail页面成功添加数据之后,自动刷新购物车页面的数据。

0

主题

1639

帖子

497

积分

中级会员

Rank: 3Rank: 3

积分
497
QQ
发表于 2016-8-15 10:07:57 | 显示全部楼层
你好,你可以把条件写在onBeforeRefresh里面,这样可以保证每次都设置到了筛选
回复我的时候请点击我当前评论旁边的回复按钮,能保证第一时间看到您的回复,在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

6

主题

30

帖子

106

积分

初级会员

Rank: 2

积分
106
QQ
 楼主| 发表于 2016-8-15 13:52:22 | 显示全部楼层
cgrddv 发表于 2016-8-15 10:07
你好,你可以把条件写在onBeforeRefresh里面,这样可以保证每次都设置到了筛选 ...

你好,感谢您的回复,不知道理解的是否正确,所说的条件写在Cart.W页面Data组件的onBeforeRefresh事件里吗??
car7.png

我按照这种写法,WEB端报错——Maximum call stack size exceeded的错误 。可否说的详细一些,应该怎样修改??
回复 支持 反对

使用道具 举报

0

主题

1639

帖子

497

积分

中级会员

Rank: 3Rank: 3

积分
497
QQ
发表于 2016-8-15 13:57:44 | 显示全部楼层
lsh902 发表于 2016-8-15 13:52
你好,感谢您的回复,不知道理解的是否正确,所说的条件写在Cart.W页面Data组件的onBeforeRefresh事件里 ...

只写刷新条件就行了,不用refreshData,放在beforeRefresh事件里,就是在它刷新前设置条件,所有就不需要再调刷新方法了
回复我的时候请点击我当前评论旁边的回复按钮,能保证第一时间看到您的回复,在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

6

主题

30

帖子

106

积分

初级会员

Rank: 2

积分
106
QQ
 楼主| 发表于 2016-8-15 15:17:14 | 显示全部楼层
cgrddv 发表于 2016-8-15 13:57
只写刷新条件就行了,不用refreshData,放在beforeRefresh事件里,就是在它刷新前设置条件,所有就不需要 ...

您可能没理解我的意思,我希望是不要手动刷新数据,通过切换到页面时自动刷新数据。比如这样:我只取两条数据做演示。id等于2和7的数据。
        Model.prototype.goodsDataBeforeRefresh = function(event){
                this.comp("goodsData").setFilter("C0", "id in ('2','7')");
        };
id=7的数据是要新增的数据,目前数据库中只有id=2的数据。WEB端也只有这一条数据。
car7.png car8.png
当我将id=7的数据添加至购物车,提示成功之后,数据库里添加数据也成功了,但是我再点击顶部的购物车按钮,或者是从buttonGroup的购物车按钮转到cart.w页面时
我希望是id=7的数据已经加载进来了,但是购物车好像根本就没有自动刷新,还是只有id=2的数据,只有我手动按F5之后,数据才会加载进来。
car9.png

手动刷新之后,新增的id=7的数据才会进来,我希望的效果时,自动刷新数据,当转到cart.w页面时,数据已经刷新了的效果。
car11.png


用onBeforeRefresh依然没有效果,我感觉问题应该是出在跳转到cart.w页的写法有问题,不知道是不是fireEvent方法的问题??

        Model.prototype.shoppingCartBtnClick = function(event){
                /*
                1、切换到购物车页面
                */
                justep.Shell.fireEvent("onShoppingContent","USER");
                justep.Shell.showMainPage();
        };

回复 支持 反对

使用道具 举报

6

主题

30

帖子

106

积分

初级会员

Rank: 2

积分
106
QQ
 楼主| 发表于 2016-8-15 15:49:31 | 显示全部楼层
cgrddv 发表于 2016-8-15 13:57
只写刷新条件就行了,不用refreshData,放在beforeRefresh事件里,就是在它刷新前设置条件,所有就不需要 ...

我又想到了一个新的思路,就是在cart.w页面的购物车商品列表list组件的属性中,允许上拉、下拉自动刷新数据,
car12.png

这样的话,虽然跳转到这个页面的时候,只有id=2的数据,但是手动操作,list组件上拉、下拉也可以实现数据自动加载的效果,我正在测试这种方法,好像不是很稳定,有的时候页面会消失,这里需要注意什么问题吗?另外请教弹出友情提示的说明上拉、下拉更新数据的提示框,怎么做?
回复 支持 反对

使用道具 举报

0

主题

1639

帖子

497

积分

中级会员

Rank: 3Rank: 3

积分
497
QQ
发表于 2016-8-15 16:05:24 | 显示全部楼层
lsh902 发表于 2016-8-15 15:49
我又想到了一个新的思路,就是在cart.w页面的购物车商品列表list组件的属性中,允许上拉、下拉自动刷新数 ...

我这里试了一下,在onparamsreceive里去写refreshData()是可以生效的啊,你打一个debugger,看看运行refreshData方法了没有,还有就是下拉刷新,用提醒的方式来做,总归用户体验不好。提示文本你可以调用 这个方法:justep.Util.hint(text, options)这个方法,可以看一看提示
回复我的时候请点击我当前评论旁边的回复按钮,能保证第一时间看到您的回复,在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

6

主题

30

帖子

106

积分

初级会员

Rank: 2

积分
106
QQ
 楼主| 发表于 2016-8-16 01:17:54 | 显示全部楼层
cgrddv 发表于 2016-8-15 16:05
我这里试了一下,在onparamsreceive里去写refreshData()是可以生效的啊,你打一个debugger,看看运行refr ...

你好,我打一个debugger,调试发现,只有第一次加载时,和按F5刷新浏览器的时候,才会执行onParamsReceive事件,页面跳转、下拉list的时候,都不会执行onParamsReceive事件,新增的数据还是添加不进来。
        Model.prototype.modelParamsReceive = function(event){
                this.comp("goodsData").setFilter("C0", "fShopID = 'USER'");
                debugger;
                this.comp("goodsData").refreshData();
        };


所以我在想可能还是detail页面的跳转fireEvent这个方法,可能有问题,这个思路对吗?或者是某个组件的属性设置的问题?
        Model.prototype.shoppingCartBtnClick = function(event){
                /*
                1、切换到购物车页面
                */
                justep.Shell.fireEvent("onShoppingContent","USER");
                justep.Shell.showMainPage();
        };

回复 支持 反对

使用道具 举报

0

主题

1639

帖子

497

积分

中级会员

Rank: 3Rank: 3

积分
497
QQ
发表于 2016-8-16 09:43:00 | 显示全部楼层
lsh902 发表于 2016-8-16 01:17
你好,我打一个debugger,调试发现,只有第一次加载时,和按F5刷新浏览器的时候,才会执行onParamsReceiv ...

我测试了一下淘宝案例是可以激活onparamsreceive事件,你对比着看一下,这几句方法是对着呢,我这里这个环境也能通过
回复我的时候请点击我当前评论旁边的回复按钮,能保证第一时间看到您的回复,在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

6

主题

30

帖子

106

积分

初级会员

Rank: 2

积分
106
QQ
 楼主| 发表于 2016-8-16 16:08:13 | 显示全部楼层
cgrddv 发表于 2016-8-16 09:43
我测试了一下淘宝案例是可以激活onparamsreceive事件,你对比着看一下,这几句方法是对着呢,我这里这个 ...

按照你的思路我测试了一下,在UI2/demo/taobao/cart.w文件中,把静态的JSON改成取数据库baasData组件,加了modelParamsReceive方法打了debugger,就改了这两个地方,然后加载测试,和你说法一致,确实只要转到购物车页面,就会执行modelParamsReceive方法。然后我开始比较UI2/demo/taobao/cart.w文件,和我之前做的文件的差异,所有组件的属性、JS脚本、CSS脚本都检查过了,都是一样的。但是只要一运行我的项目还是实现不了效果,debugger总是在全局F5刷新的时候才断点,比较郁闷,我实在没办法了,直接把UI2/demo/taobao/cart.w、cart.js、cart.css三个文件全替换到我的项目中,发现还是这样的情况,只有全局F5刷新的时候才会调用modelParamsReceive方法,之后无论怎么操作都不会调用,我又想会不会是index.w或者main.w的问题,也都检查的一下,也没有发现不一样的地方,不知道现在还有什么解决方法吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-2 02:28 , Processed in 0.061598 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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