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

QQ登录

只需一步,快速开始

查看: 2262|回复: 9

[结贴] attachmentSimple组件问题

[复制链接]

13

主题

37

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
发表于 2016-3-29 11:55:13 | 显示全部楼层 |阅读模式
attachmentSimple组件绑定data组件后,如果有多行记录,控制上传类型、数量、大小的操作仅能控制第一行。我想是因为:尽管我只添加了一个attachmentSimple组件,但由于绑定了data控件,当有多行数据时,会自动生成多个attachmentSimple组件与每行数据对应。我测试时每行attachmentSimple组件都能上传文件、删除文件,但除第一行外,其余行不能控制上传图片类型、大小、数量。是不是因为自动生成的attachmentSimple组件ID不一样,因此才会出现这种情况。这要如何解决呢?

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2016-3-29 13:47:10 | 显示全部楼层
bind-ref应该绑定到row上,不要绑在data上
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复 支持 反对

使用道具 举报

发表于 2016-3-29 15:34:23 | 显示全部楼层
请问你是如何控制的??
如果是通过XID 当然只能得到第一个attachmentSimple组件对象
如果你想获取list中对应行的组件对象,请参考

http://bbs.wex5.com/forum.php?mo ... 3&pid=165200495
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

13

主题

37

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2016-3-29 16:45:20 | 显示全部楼层
我先用listtable组合组件中list的data属性绑定了baasData数据组件,然后在行中加入了attachmentSimple组件,将bind-ref属性设置为了指定的一个字段。当测试时上传的文件信息能够成功的保存到数据库中。之后我再讲控制类型、大小、数量的方法写在了model的onLoad事件中。代码如下:
Model.prototype.modelLoad = function(event) {
                var data = this.comp("baasData1");
                var uploader = this.comp("attachmentSimple1").uploader;
                uploader.on('onFileSelected', function(event) {
                        if (event.file.name.split(".")[1] != "jpg") {
                                justep.Util.hint("只能上传jpg图片!且文件名中不能有实心点");
                                event.cancel = true;
                                return;
                        }
                        if (event.file.size > 1024000) {
                                justep.Util.hint("上传的文件大小不能超过100KB");
                                event.cancel = true;
                                return;
                        }
                        if ($.parseJSON(data.getValue("pc")).length >= 1) {
                                alert("只能上传1个文件");
                                event.cancel = true;
                                return;
                        }
                });
        };
之后测试就只有第一行可以控制,其它行就不行了。
回复 支持 反对

使用道具 举报

发表于 2016-3-29 18:13:00 | 显示全部楼层
zhegexiaji 发表于 2016-3-29 16:45
我先用listtable组合组件中list的data属性绑定了baasData数据组件,然后在行中加入了attachmentSimple组件, ...

因为你是使用代码
this.comp("attachmentSimple1") 获取attachmentSimple组件对象的!
而这个组件是动态生成的,所以只能获取到第一个!!

使用我3楼链接提供的方式!在list中通过获取dom节点对象,然后再转化为组件对象
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

13

主题

37

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2016-3-29 21:06:56 | 显示全部楼层
我将“var uploader = this.comp("attachmentSimple1").uploader;”改为了“var uploader = this.comp(event.currentTarget).uploader;”并且把以上代码都放到了list的单击事件中。测试没有报错,但发现当某一行上传了文件后,再在其它行上传文件时都提示“只能上传1个文件”,这又是什么问题?
回复 支持 反对

使用道具 举报

发表于 2016-3-30 10:05:14 | 显示全部楼层
zhegexiaji 发表于 2016-3-29 21:06
我将“var uploader = this.comp("attachmentSimple1").uploader;”改为了“var uploader = this.comp(even ...

那你看下代码
是不是执行data.getValue 的时候,行list行还没有切换呢!所以得到的还是上一行的数据
在list中获取当前行的方法是

var row = event.bindingContext.$object;
row.val("value");
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

13

主题

37

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2016-3-30 11:13:13 | 显示全部楼层
的确得到的不是当前行的数据,需要先单击切换到行对象,之后再单击上传按钮才可以控制。
谢谢您这么耐心的指导。
回复 支持 反对

使用道具 举报

44

主题

150

帖子

382

积分

中级会员

Rank: 3Rank: 3

积分
382
QQ
发表于 2016-8-8 09:36:46 | 显示全部楼层
zhegexiaji 发表于 2016-3-29 16:45
我先用listtable组合组件中list的data属性绑定了baasData数据组件,然后在行中加入了attachmentSimple组件, ...

请问下楼主,上传文件的数量你是怎么控制的,“pc”值怎么来
回复 支持 反对

使用道具 举报

13

主题

37

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2016-8-28 15:02:38 | 显示全部楼层
qw_zhku 发表于 2016-8-8 09:36
请问下楼主,上传文件的数量你是怎么控制的,“pc”值怎么来

"pc"是数据库表的一个字段,用来存储attachmentSimple组件上传信息的值。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 00:53 , Processed in 0.058355 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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