为什么`this`指向Ember DS.Model中的`window`对象?

时间:2014-04-08 16:54:06

标签: ember.js

我刚遇到一个非常奇怪的情况:

在像这样的DS.Model中:

App.Event = DS.Model.extend
  date: DS.attr 'string'
  name: DS.attr 'string'
  startAt: DS.attr 'string'
  endAt: DS.attr 'string'
  startTime: (->
    moment(@startAt).format 'L'  # PAY ATTENTION AT HERE
  ).property @startAt            # AND HERE

这段代码确实有效,但如果我将@startAt更改为@get 'startAt',那么this将不再指向DS.Model的实例,而是指向{ {1}}对象!

这是两个调试截图:

enter image description here

enter image description here

这是怎么发生的?我已将此代码放在网上:http://jsfiddle.net/nightire/EJqRA/

1 个答案:

答案 0 :(得分:3)

我不知道coffeescript,但我想你的问题将通过更换来解决

App.Event = DS.Model.extend
  date: DS.attr 'string'
  name: DS.attr 'string'
  startAt: DS.attr 'string'
  endAt: DS.attr 'string'
  startTime: (->
    moment(@get 'startAt').format 'L'
  ).property @get('startAt')

 App.Event = DS.Model.extend
  date: DS.attr 'string'
  name: DS.attr 'string'
  startAt: DS.attr 'string'
  endAt: DS.attr 'string'
  startTime: (->
    moment(@get 'startAt').format 'L'
  ).property('startAt')