1

私は最近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) {

  }));
4

2 に答える 2

3

tmplanddoneメソッドの括弧を追加

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
于 2013-03-19T08:24:01.870 に答える
2

「かっこはオプションなので使用していません」というごちゃごちゃしたり、難解な難解なインデントを作成したりする代わりに、物事を小さな断片に分割し、断片に名前を付けて、それらを簡単にまとめるだけです。

done = (rendered) ->
    # something1
fail = (ex) ->
    # something2
TemplateManager.tmpl(@template, @modelJSON(), @templateOptions())
    .done(done)
    .fail(fail)

「something1」と「something2」が何であるかわからないので、それらにまともな名前を付けることはできず、概念名の証明doneと見なすことはできません。fail

関数を無名にできるからといって、無名でなければならないというわけではありません。一部の括弧がオプションであるという理由だけで、それらを省略しなければならないという意味ではありません。

于 2013-03-19T08:36:24.480 に答える