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

QQ登录

只需一步,快速开始

查看: 2267|回复: 8

[处理中1] this的问题。

[复制链接]

49

主题

174

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
QQ
发表于 2016-9-6 20:24:52 | 显示全部楼层 |阅读模式
1、在系统的方法我就可以this.comp("xid")这样就可以取到某些组件。但是在自己定义的方法里面用什么可以取到我们页面上面的组。
2、我们怎样可以调用系统自己生成的方法,如:Model.prototype.li1Click = function(event) {};

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-9-7 11:05:51 | 显示全部楼层
ecode@ecode.net 发表于 2016-9-7 10:51
我又读了一遍  我是不是在全局定义一个类似self的。指向model,这样就可以在自己定义的方法里面使用啦 ...

嗯,只要确认this的指向,就能灵活的使用this,还有一种绑定this的方法 用call,具体用法 去往上JS的帮助文档看一下
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 1 反对 0

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-9-7 10:41:18 | 显示全部楼层
本帖最后由 闰土 于 2016-9-7 10:43 编辑

具体你可以先上网查查 JS中this的用法,this.comp() 这个方法一般都是些在
Model.prototype.XXXX = function(){
   this.comp("xid")   // 此时this.指定的是Model
}
JS我们使用了 requireJS 代码模块化,
var Model = function() {
                this.callParent();
} 而我们现在用的this指代这个model 就是这个JS文件模块的全局。当this指定到Model时,Model.prototype.li1Click = function(event) {}类似这样的方法 就可以用this.li1Click(event) 直接调用 如果
Model.prototype.li1Click = function(event) {
   var self  = this  // 留住this
    this.comp("data").each(function(){ // 这里的this指代就是 model  ,可以直接使用
       this.comp("xid")  // 在这里 this  指定 是 前面这个this.comp("data"),所以这里的this是用错了 会报错 ,解决方法就是留住this
       self.comp("xid") // 此时self = this,指定Model ,

    })
}Js中this的用法有很多种,不过一般的wex5 开发 就是上面两种用最多
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

49

主题

174

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
QQ
 楼主| 发表于 2016-9-7 10:45:22 | 显示全部楼层
闰土 发表于 2016-9-7 10:41
具体你可以先上网查查 JS中this的用法,this.comp() 这个方法一般都是些在
Model.prototype.XXXX = functi ...

哦哦,那我知道怎样调用了。还有就是我要自己定义了一个方法function  click(){this.comp("xid")}.。。在这里面是不能this这个model的。我想问  怎样可以在自己的这个方法里面可以调用到组件
回复 支持 反对

使用道具 举报

49

主题

174

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
QQ
 楼主| 发表于 2016-9-7 10:51:51 | 显示全部楼层
闰土 发表于 2016-9-7 10:41
具体你可以先上网查查 JS中this的用法,this.comp() 这个方法一般都是些在
Model.prototype.XXXX = functi ...

我又读了一遍  我是不是在全局定义一个类似self的。指向model,这样就可以在自己定义的方法里面使用啦
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-9-7 11:03:45 | 显示全部楼层
ecode@ecode.net 发表于 2016-9-7 10:45
哦哦,那我知道怎样调用了。还有就是我要自己定义了一个方法function  click(){this.comp("xid")}.。。在 ...

不在一个方法是不可以的,模块化JS ,就是说每一个模块互不干涉,你写在
var Model = function() {
                this.callParent();
}
这里面试试,
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

49

主题

174

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
QQ
 楼主| 发表于 2016-9-7 11:08:57 | 显示全部楼层
闰土 发表于 2016-9-7 11:05
嗯,只要确认this的指向,就能灵活的使用this,还有一种绑定this的方法 用call,具体用法 去往上JS的帮助 ...

好的。谢谢你啦
回复 支持 反对

使用道具 举报

49

主题

174

帖子

338

积分

中级会员

Rank: 3Rank: 3

积分
338
QQ
 楼主| 发表于 2016-9-7 11:37:03 | 显示全部楼层
闰土 发表于 2016-9-7 10:41
具体你可以先上网查查 JS中this的用法,this.comp() 这个方法一般都是些在
Model.prototype.XXXX = functi ...

刚才遇到一个问题。我在调用方法的时候,想要传参var event = 1;this.essayDataCustomRefresh(event);这个要调用的方法。接收不到这个参数。报object。而且obj转string的方法也不好用。就不会怎样传参啦
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-9-7 13:25:31 | 显示全部楼层
传参其实没有影响,保证交互的方法就可以,具体的东西,你只能自己打debugger,调试了,实现的方式有很多
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 11:22 , Processed in 0.081521 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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