Coffeescript对象、jquery回调和变量作用域的冲突和混淆
Coffeescript objects, jquery callback and variable scope conflicts and confusion
试图找到最好的方法来完成这项工作:
class Person
constructor: (@el) ->
@el = $(el)
this.bind()
bind: ->
@el.find('.something').on 'click', ->
$(this).hide() # conflict!
this.do_something() # conflict!
do_something: ->
alert 'done!'
我知道我可以使用哈希火箭(=>),然后从我的回调中访问this.do_something
,但这与callback 'this'
冲突,所以jquery试图选择对象,而不是element '.something'
。如何解决这个问题?
你不能让this
引用不同的对象。使用不同的标识符,将实例的this
引用存储在辅助变量中:
bind: ->
person = this
@el.find('.something').on 'click', ->
$(this).hide()
person.do_something()
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- 访问多个指令的隔离作用域
- Javascript作用域和Ajax调用;工作不正常
- 向Angular作用域对象添加对象数组——TypeError
- jQuery/Javascript作用域,可能是变量作用域冲突
- Coffeescript对象、jquery回调和变量作用域的冲突和混淆
- 2对象作用域相互冲突
- IE7和IE8的命名和作用域冲突
- 在编写jQuery插件时发生作用域冲突