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

QQ登录

只需一步,快速开始

查看: 2239|回复: 8

[处理中3] 遍历baasdata里的数据的一个问题!

[复制链接]

141

主题

291

帖子

1503

积分

金牌会员

Rank: 6Rank: 6

积分
1503
QQ
发表于 2018-9-7 17:08:54 | 显示全部楼层 |阅读模式
用each 遍历 baasdata 里的数据,代码如下:

    --  代码块1
                var data1 = this.comp("caigouData");
                var data2 = this.comp("purdetailData");

                var needChecks = new Array("规格", "数量", "计价方式", "单价");
                data2.each(function(param) {
                        var row = param.row;
                        var i;
                        for (i in needChecks) {
                                if (!row.val(needChecks[i])) {
                                        justep.Util.hint(needChecks[i] + "不能为空!");
                                        return;
                                }
                        }
                });

     --- 代码块2
                data1.getCurrentRow().val("状态", 1);
                data1.saveData({
                        "onSuccess" : function() {
                                data2.saveData({
                                        "onSuccess" : function() {
                                                justep.Util.hint("采购开单成功!");
                                        }
                                });
                        },
                        "onError" : function() {
                                justep.Util.hint("开单失败,请重试!");
                        }
                });

                this.close();


这两个代码块,若注释掉 代码块2 则会执行 代码块1 的 each 操作。。。若不注释,代码块1的each 则不执行! 求解?

141

主题

291

帖子

1503

积分

金牌会员

Rank: 6Rank: 6

积分
1503
QQ
 楼主| 发表于 2018-9-10 17:27:24 | 显示全部楼层
回复

使用道具 举报

6

主题

77

帖子

178

积分

初级会员

Rank: 2

积分
178
QQ
发表于 2018-9-10 18:55:37 | 显示全部楼层

都执行了justep.Util.hint("采购开单成功!");这个里的内容最后一次执行会把前面的覆盖掉。
var message = “”;
方法1:function(){
message = “第一次的语句”
}
方法2:functiong(){
message = "第二次执行的语句"
}
都走的话就被第二次的覆盖了
回复 支持 反对

使用道具 举报

6

主题

77

帖子

178

积分

初级会员

Rank: 2

积分
178
QQ
发表于 2018-9-10 18:56:17 | 显示全部楼层
xuErnest 发表于 2018-9-10 18:55
都执行了justep.Util.hint("采购开单成功!");这个里的内容最后一次执行会把前面的覆盖掉。
var message = ...

和这种类似
回复 支持 反对

使用道具 举报

53

主题

928

帖子

1730

积分

金牌会员

Rank: 6Rank: 6

积分
1730
发表于 2018-9-11 00:06:15 | 显示全部楼层
我的猜测是····   是否each是一个同步操作(也就是在each执行的时候,代码是继续在往下跑的,并不是each完之后才往下跑)   所以你代码块2存在的时候   会中断代码块1的循环   因为你的代码块2里面有一个对data2的保存操作,这个保存操作 应该会让data2的状态改为完成时(即所有操作结束)
所以  你如果想实现你的效果   你应该在each执行完成的情况下  再对data2进行保存  
保存操作  会改变data的状态的(我们把data被操作或被修改的状态称为  进行态    那么保存之后  这种进行态  会被更改为  完成态    不知道我这样说
你能否懂我的意思       data  对每一行都有一个userData  来存储这一行的状态   如果发生了  修改、新增、删除等等操作的时候,是会有记录   但是一经保存之后,这些记录就被抹去了,相当于数据就是最终定下来的了   要再下一次进行操作的时候  才会再记录状态)
承接wex5开发web项目、微信页面等;
低费用进行零散功能开发(java、JS、微信各种接口、阿里云接口等)
QQ:459349489
回复 支持 反对

使用道具 举报

141

主题

291

帖子

1503

积分

金牌会员

Rank: 6Rank: 6

积分
1503
QQ
 楼主| 发表于 2018-9-11 14:39:35 | 显示全部楼层
非常感谢各位的解答,但请问若 each是同步操作,可否改成异步的? 上门代码该如何修改呢?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36133
发表于 2018-9-11 16:27:11 | 显示全部楼层
js中完整的代码是什么?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

141

主题

291

帖子

1503

积分

金牌会员

Rank: 6Rank: 6

积分
1503
QQ
 楼主| 发表于 2018-9-11 16:43:28 | 显示全部楼层
jishuang 发表于 2018-9-11 16:27
js中完整的代码是什么?

一楼就是按钮的点击完整代码!
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36133
发表于 2018-9-11 17:31:31 | 显示全部楼层
把代码块2中的放到setTimeout中执行看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-21 22:18 , Processed in 0.054615 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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