0

次の有効な JavaScript があります。

App.Person = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
birthday: DS.attr('date'),

fullName: function() {
    return this.get('firstName') + ' ' + this.get('lastName');
  }.property('firstName', 'lastName')
});

js2coffee.orgによると、この js は次のコーヒー スクリプトと同等です。

App.Person = DS.Model.extend(
  firstName: DS.attr("string")
  lastName: DS.attr("string")
  birthday: DS.attr("date")
  fullName: ->
    @get("firstName") + " " + @get("lastName")
  .property("firstName", "lastName")
)

ただし、同じコーヒー スクリプトは有効な JavaScript にコンパイルされません。「予期しない '.' でエラーになるため、有効なコーヒー スクリプトでさえありません。"

上記と同じまたは構文的に同等の javascript を作成する有効な Coffee Script を作成するにはどうすればよいですか?

4

2 に答える 2

0

Coffeescript:

App.Person = DS.Model.extend(
  firstName: DS.attr("string")
  lastName: DS.attr("string")
  birthday: DS.attr("date")
  fullName: ( ->
    @get("firstName") + " " + @get("lastName")
  ).property("firstName", "lastName")
)

コンパイル先:

App.Person = DS.Model.extend({
  firstName: DS.attr("string"),
  lastName: DS.attr("string"),
  birthday: DS.attr("date"),
  fullName: (function() {
    return this.get("firstName") + " " + this.get("lastName");
  }).property("firstName", "lastName")
});
于 2012-05-04T02:36:38.410 に答える
0

とにかくこのようにすることはありますか:

class App.Person extends DS.Model
    name: DS.attr

この構文では機能しないことはわかっていますが、Coffee のクラス構文を使用したいと思います

于 2014-04-11T01:19:41.093 に答える