我有一个库提供的函数,在一些处理后运行回调。
在回调中,我想访问其方法启动该回调的父对象 - 见下文。
class MaskMaker
addMaskedImage: (imagefile, texturefile, canvasid) ->
$('<img src="'+imagefile+'">').load ->
console.log('Id like to call another MaskMaker method with @width as a parameter')
显然=&gt;将允许我访问父对象,因为这个/ @, - &gt;将允许我访问触发回调的元素as this / @。但是最好的方法是什么,例如,所以我可以用图像宽度作为参数调用MaskMaker的直接方法?我需要一个=这个黑客还是有更好的东西?
谢谢!
答案 0 :(得分:3)
但是最好的方法是什么,例如,所以我可以用图像宽度作为参数调用MaskMaker的直接方法?
你不能同时选择(显然),所以必须选择=>
+ event.target
$('<img src="'+imagefile+'">').load (ev) => @method ev.target.width
或好ol'
that = this
$('<img src="'+imagefile+'">').load -> that.method @width
答案 1 :(得分:2)
如果我完全理解你的代码结构,你可以添加一个变量来保存对MaskMaker实例的引用。由于范围的原因,您将能够看到链中的任何内容。
class MaskMaker
var self = this;
addMaskedImage: (imagefile, texturefile, canvasid) ->
$('<img src="'+imagefile+'">').load ->
console.log('Id like to call another MaskMaker method with @width as a parameter')
//self references MaskMaker now, so you can call self.addMaskedImage for example
答案 2 :(得分:0)
在MaskMaker范围内定义并绑定您的回调:
class MaskMaker
afterAdd => console.log('Id like to call another MaskMaker method with @width as a parameter')
addMaskedImage: (imagefile, texturefile, canvasid) ->
$('<img src="'+imagefile+'">').load -> afterAdd()
请注意,我使用胖箭头语法=>
将afterAdd中存储的函数绑定到MaskMaker。