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

QQ登录

只需一步,快速开始

查看: 2185|回复: 7

[处理中1] 如何在jquery中使用this.comp 获取data组件

[复制链接]

11

主题

25

帖子

81

积分

初级会员

Rank: 2

积分
81
QQ
发表于 2016-9-29 09:45:06 | 显示全部楼层 |阅读模式
本帖最后由 batcom 于 2016-9-29 10:19 编辑

如题,在jquery的事件监听方法中要如何使用this呢? 或者this.comp('xid') 如何与$('') 等效? 请问这样如何才可以?

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-9-29 13:36:13 | 显示全部楼层
不会等效吧,你用$("this.comp('xid')") 这样拿到的就是一个JQ对象,或者$(this.getElementByXid("xid")) 这样那就是一个JQ对象了
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2016-10-5 11:08:10 | 显示全部楼层
在X5中是用jquery方法,参考如下帖子:
X5.3中常用到的jQuery整理
http://bbs.wex5.com/forum.php?mod=viewthread&tid=75545
(出处: 起步软件技术论坛)
长春鱼熊企业管理咨询有限公司



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

使用道具 举报

11

主题

25

帖子

81

积分

初级会员

Rank: 2

积分
81
QQ
 楼主| 发表于 2016-10-13 13:23:44 | 显示全部楼层
我的意思是在jquery的时间中this变为了jquery对象,而x5里面要获取组建用的是this.comp,特别是获取数据模型的时候,这时候this.comp用不了了,拿不道数据了怎么办。比如
$('li').on(function(){
//这里面如果要获取data或者其它组建,如何处理呢?因this,已经不是指向Model作用域了,
},'click');

看的例子都是 Model.propetype.getdata = function(event){
me = this;
$.ajax(url,function(){
me.comp()的例子
})
}

以上都是伪码,但相信我的意思已经表达清楚了
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-10-13 17:35:33 | 显示全部楼层
batcom 发表于 2016-10-13 13:23
我的意思是在jquery的时间中this变为了jquery对象,而x5里面要获取组建用的是this.comp,特别是获取数据模型 ...

因为wex5 使用的是requireJS 代码模块化,所以他的外层都是以
Model.prototype.XXX = function(){
  
}来表示此处是一个模块,然后你想绑定自己Jquery方法,那就是在你希望的模块下写,比如

  1. Model.prototype.XXX = function(){
  2.   $('li').on(function(){
  3. //这里面如果要获取data或者其它组建,如何处理呢?因this,已经不是指向Model作用域了,
  4. },'click');
  5. }
复制代码

此时,在注释地方使用this ,this指定的就是 你的$("li") 了。所以在这里,我们使用留住this的方法来解决 ,代码如下


  1. Model.prototype.XXX = function(){
  2. var self = this;
  3.   $('li').on(function(){
  4.         self.comp("dataXid") //如此 就可以获取到data了
  5. },'click');
  6. }
复制代码
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

11

主题

25

帖子

81

积分

初级会员

Rank: 2

积分
81
QQ
 楼主| 发表于 2016-10-14 10:18:47 | 显示全部楼层
闰土 发表于 2016-10-13 17:35
因为wex5 使用的是requireJS 代码模块化,所以他的外层都是以
Model.prototype.XXX = function(){
  

  1. Model.prototype.XXX = function(){
  2. var self = this;
  3.   $('li').on(function(){
  4.         self.comp("dataXid") //如此 就可以获取到data了
  5. },'click');
  6. }
复制代码
但是以上的xxx模块是根据需要调用的啊,而jquery的事件绑定用的最多的是全局绑定,就是页面加载完这个事件就能绑定,然后等待用户出发。而如果这个xxx模块方法不被调用的话,这个事情还能绑定吗?用户点击不就没反应了。
我知道可以在Model.prototype.onload=function(){} 里面类似jquery的$(function(){})全局绑定,但是这里面就有一个问题了,onload里面data组建应该是还没有加载的吧,或者如果存在组建在onload里面还没有加载的情况,那on里面绑定的事件就会出现逻辑错误了,遇到这种情况要怎么处理呢?



回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-10-14 11:24:12 | 显示全部楼层
batcom 发表于 2016-10-14 10:18
但是以上的xxx模块是根据需要调用的啊,而jquery的事件绑定用的最多的是全局绑定,就是页面加载完这个事 ...

因为用了requireJS,所以,使用模块化必须要使用

定义的全局 . prototype .函数名称 = function(){},根据楼主在全局定义,

在wex5中的全局 定义一个函数
var Model = function() {
                this.callParent();
        };
其他所有的函数 都是 Model .prototye 都是在Model 下的定义的函数,

也就是说,在requireJS 下定义的函数,一定要符合模块化的规范。

具体到,你后面这个问题,我想,放在modelLoad 页面加载完毕之后试一下吧
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-10-14 11:24:14 | 显示全部楼层
batcom 发表于 2016-10-14 10:18
但是以上的xxx模块是根据需要调用的啊,而jquery的事件绑定用的最多的是全局绑定,就是页面加载完这个事 ...

因为用了requireJS,所以,使用模块化必须要使用

定义的全局 . prototype .函数名称 = function(){},根据楼主在全局定义,

在wex5中的全局 定义一个函数
var Model = function() {
                this.callParent();
        };
其他所有的函数 都是 Model .prototye 都是在Model 下的定义的函数,

也就是说,在requireJS 下定义的函数,一定要符合模块化的规范。

具体到,你后面这个问题,我想,放在modelLoad 页面加载完毕之后试一下吧
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 13:31 , Processed in 0.082921 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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