coffeescript中缺少上下文=>操作者

时间:2014-05-30 09:26:50

标签: coffeescript

    App.WebNotificationComponent = Em.Component.extend
      subscriptionQueue: null

      connection: (->
        App.StompConnection.create(subscriptionQueue: @get('subscriptionQueue'))
      ).property('subscriptionQueue')

      willDestroy: ->
        @get('connection').destroy()

    App.AlertsIndexAlertWebNotificationComponent = App.WebNotificationComponent.extend
      subscriptionQueue: "notifications"

      didInsertElement: ->
        @get('connection').onMessage = ((message) ->
          result = JSON.parse(message.body)
          App.AlertNotification.store.find('alert_notification', result.id).then (notification) =>
            debugger
        ).bind(@get('targetObject'))
        @get('connection').connect()

在调试器断点处,我无法再访问消息结果

有什么我做错了或其他方法吗?

1 个答案:

答案 0 :(得分:1)

您无法在调试器中访问这些值,因为您没有关闭它们,因此它们在闭包中不可用。如果您在封闭中使用它们,它们将可用。 Javascript必须知道您将使用变量才能将其保存在封闭范围内。

换句话说,这将按预期工作:

result = JSON.parse(message.body)
    App.AlertNotification.store.find('alert_notification', result.id).then (notification) =>
        console.log(message)
        console.log(result)