我有一个我正在发出Ajax请求的coffeescript文件:
$.ajax url,
type: 'GET'
dataType: 'json'
success: (data) =>
@items = _.map data, (item) ->
item.trimmedName = @.trimmedSearchString item.name
return item
但是调用此命令会在控制台中输出以下错误:
未捕获的TypeError:this.trimmedSearchString不是函数
当我检查生成的javascript时,我得出的结论是coffeescript由于某些原因使范围弄乱了
_this.items = _.map(items, function(item) {
item.trimmedName = this.trimmedSearchString(item.name);
return item;
});
该功能定义为我拥有的所有其他功能:
trimmedSearchString: (value) ->
我在这里看到两种解决方案。首先用于循环
for item in items
我已经尝试过了,并且实际上可以与其余代码一起使用,但是我想使用undescorejs
s` map函数,所以我发现的解决方法(?)是使用_this而不是调用该函数@
item.trimmedName = _this.trimmedSearchString item.name
但是我觉得找出范围是一项艰巨的工作。所以我的问题是如何在map
函数内部以coffeescript方式调用我的函数?