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

QQ登录

只需一步,快速开始

查看: 8383|回复: 13

[结贴] list组件点击获取当前行对象

[复制链接]

19

主题

58

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
QQ
发表于 2017-5-15 16:29:31 | 显示全部楼层 |阅读模式
注意是当前行对象,不是当前行绑定的数据。
我要的效果是:首先list,每一行只显示名称(绑定的数据name字段),详细信息隐藏(绑定的其他数据字段);当点击某一行时,需要将当前行隐藏的部分显示,其他行(已经打开过)的部分重新隐藏。
试过DOM节点,只能获取到第一行对象,定位不到当前行。
试过 event.source.domNode 和 event.source.$domNode,报错。
试过  this.comp($(event.currentTarget).find("div[class='x-row cyiMnaq']")[0]).getXid();点击每行的结果都一样,拿到的XID也始终是第一行的XID;
试过 var dom = $(event.currentTarget).children("div")[0],能取到值,格式(或者说结构)和$(event.currentTarget).find("div[class='x-row cyiMnaq']")[0] 一样,取到的值倒是各不相同。
但是 this.comp(dom)报错,无法进行下去了。
再次强调,跟绑定数据没有任何关系,请问如何取到当前点击行的对象进行下一步操作?
难道只能利用js动态append($(li))来实现么,那么list组件的局限性也太大了。
发表于 2017-5-15 16:45:13 | 显示全部楼层
本帖最后由 liangyongfei 于 2017-5-15 17:57 编辑

http://docs.wex5.com/wex5-ui-question-list-2019/

注意  是class属性 为   x-list-template 下面的节点 点击事件才能获取当前行对象! 这个属性值自身,或者父以上标签是无法点击事件中获取的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

19

主题

58

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
QQ
 楼主| 发表于 2017-5-15 16:51:11 | 显示全部楼层
我点击的就是<li>节点
回复 支持 反对

使用道具 举报

19

主题

58

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
QQ
 楼主| 发表于 2017-5-15 16:53:18 | 显示全部楼层
liangyongfei 发表于 2017-5-15 16:45
http://docs.wex5.com/wex5-ui-question-list-2019/

注意  是class属性 为   x-list-template 下面的节点  ...

还有,我都说了不管数据的事。
alert(JSON.stringify(event.bindingContext.$object.toJson());
从头到尾看过了,只能取到数据而已,我是要取对象进行下一步操作。
回复 支持 反对

使用道具 举报

发表于 2017-5-15 16:59:53 | 显示全部楼层
仅此而已 发表于 2017-5-15 16:53
还有,我都说了不管数据的事。
alert(JSON.stringify(event.bindingContext.$object.toJson());
从头到尾 ...

http://docs.wex5.com/wex5-ui-question-list-2061/

点击事件获取当前点击的 对象源
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

19

主题

58

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
QQ
 楼主| 发表于 2017-5-15 17:19:01 | 显示全部楼层
liangyongfei 发表于 2017-5-15 16:59
http://docs.wex5.com/wex5-ui-question-list-2061/

点击事件获取当前点击的 对象源

QQ截图20170515171258.png
        Model.prototype.li1Click = function(event){
                var buttonDom = $(event.currentTarget).find("div[name='"+event.bindingContext.$object.index()+"']");
        };

        alert(JSON.stringify(buttonDom.prevObject[0])); ==> undefined
        alert(JSON.stringify(buttonDom.prevObject[0]));  ==> {"__ko__1494839518215":"ko96","jQuery1111001921578007750213":84}
        this.comp(buttonDom.prevObject[0]).getXid();  ==> Uncaught TypeError: Cannot read property 'getXid' of undefined
        this.comp(buttonDo[0]).getXid();  ==> Uncaught TypeError: Cannot read property 'getXid' of null
其他方法没试,估计结果也一样。
var buttonObj =  this.comp(buttonDom[0])
这一步之后应该怎么操作?
回复 支持 反对

使用道具 举报

发表于 2017-5-15 17:35:29 | 显示全部楼层
仅此而已 发表于 2017-5-15 17:19
Model.prototype.li1Click = function(event){
                var buttonDom = $(event.currentTarget).find ...

只有x5封装的组件 才能使用this.comp(dom) 获取组件对象的!
而你的标签是一个div 也没有component属性!!显然不是组件,怎么能使用this.comp 方法呢?


建议你 点击事件 中  debugger 调试一下 event.currentTarget 值是什么??
下面是否存在向要的标签呢??

find 方法是jquery 的原本使用方法!如果存在,肯定能得到这个dom对象的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

19

主题

58

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
QQ
 楼主| 发表于 2017-5-16 09:06:00 | 显示全部楼层
liangyongfei 发表于 2017-5-15 17:35
只有x5封装的组件 才能使用this.comp(dom) 获取组件对象的!
而你的标签是一个div 也没有component属性 ...

QQ截图20170516085907.png

按你说的,改成这样一样不行,this.comp(buttonDo[0]).getXid();  ==> Uncaught TypeError: Cannot read property 'getXid' of null。
既然可以通过设置  name="$index()"  唯一标识,然后通过属性选择器来定位组件,那么我想<div xid="div8" id="$index()" name="$index()"></div>效果是一样的。
$("#" + event.bindingContext.$object.index()).attr("name") === undefined.
回复 支持 反对

使用道具 举报

19

主题

58

帖子

228

积分

中级会员

Rank: 3Rank: 3

积分
228
QQ
 楼主| 发表于 2017-5-16 09:11:41 | 显示全部楼层
“组件”的说法从数据的角度说确实很方便,省去了html代码块的遍历添加,但是this.comp()作用域有限,想要使用JQuery一些原生的方法还要通过$("#"+this.getIDByXID(xid))或者this.comp(xid).$domNode来确定事件源。从事件的角度讲,有时可能影响不大,但就像我提出的问题,用$().children和$().sblings本来很好解决,现在弄得对象都找不到
回复 支持 反对

使用道具 举报

发表于 2017-5-16 11:06:16 | 显示全部楼层
仅此而已 发表于 2017-5-16 09:11
“组件”的说法从数据的角度说确实很方便,省去了html代码块的遍历添加,但是this.comp()作用域有限,想要 ...

首先你debugger调试看一下
buttonDo 是一个什么东西??  
如果不是组件对象的dom节点,肯定使用this.comp是无法得到组件对象的!
组件最明显的标志就是有component 属性

event.currentTarget   得到的是什么??  是一个行对象的dom 节点吗?

首先你会调试看生产的源码吗?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 15:29 , Processed in 0.070768 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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