我最近开始学习CoffeeScript,我遇到了一个问题。我想写javascript:
TemplateManager.tmpl(this.template, this.modelJSON(), this.templateOptions()).done(
function(rendered) { // something1
}).fail(function(ex) {
// something2
});
我可以通过哪种方式获得它?我尝试改写:
TemplateManager.tmpl @template, @modelJSON(), @templateOptions()
.done (rendered) ->
#something1
.fail (ex) ->
#something2
我得到了:
TemplateManager.tmpl(this.template, this.modelJSON(), this.templateOptions().done(function(rendered) {
}).fail(function(ex) {
}));
答案 0 :(得分:3)
为tmpl
和done
方法添加括号
TemplateManager.tmpl( @template, @modelJSON(), @templateOptions() )
.done( (rendered) ->
#something1
)
.fail (ex) ->
#something2
解决方案并不优雅,我认为其他人可能会在coffeescript中提供更好的方法
<强>更新强>
根据评论,删除done
的括号。我已经更新了代码,我觉得这个代码很优雅
TemplateManager
.tmpl(@template, @modelJSON(), @templateOptions())
.done (rendered) ->
some
code
here
.fail (ex) ->
another
code
here
答案 1 :(得分:2)
而不是乱糟糟的“我不使用括号,因为它们是可选的”和难以理解的难以理解的缩进,只需将事情分解成小块,给出碎片名称,然后将它们放在一起:
done = (rendered) ->
# something1
fail = (ex) ->
# something2
TemplateManager.tmpl(@template, @modelJSON(), @templateOptions())
.done(done)
.fail(fail)
我不知道“something1”和“something2”是什么,所以我不能给他们体面的合理名称,考虑done
和fail
作为概念名称的证据。
仅仅因为函数可以是匿名的并不意味着必须是匿名的,只是因为某些括号是可选的并不意味着它们必须被遗漏。