Ember.js 控制器在操作中丢失

Ember.js 控制器在操作中丢失,ember.js,Ember.js,我有一个运行在rails应用程序之上的ember.js应用程序。这个余烬应用程序有一个地图和一个视图来处理标记 每次我改变路线,我都要破坏这个视图中的标记。问题是:当我第一次进入生成标记器时,我得到了我的控制器(this.get(“controller”)),然后在我的dropendobserver上,我可以用另一个this.get(“controller”) 但是当我改变路线并返回时,generateMarker能够获取控制器,但是updateLocation不能。为什么? 首次运行: gen

我有一个运行在rails应用程序之上的ember.js应用程序。这个余烬应用程序有一个地图和一个视图来处理标记

每次我改变路线,我都要破坏这个视图中的标记。问题是:当我第一次进入
生成标记器时,我得到了我的控制器(
this.get(“controller”)
),然后在我的
dropend
observer上,我可以用另一个
this.get(“controller”)

但是当我改变路线并返回时,
generateMarker
能够获取控制器,但是
updateLocation
不能。为什么?

首次运行:

generateMarker: ->
    $controller = @get("controller")
    # $controller gets the object
然后我问:

  updateLocation: (lat, lon, animate = true) ->
      ...
      @get("controller").center_passageiro()
      # This also works.
然后我转到另一条路线回来,这次:

generateMarker: ->
    $controller = @get("controller")
    # $controller gets the object and read valid information
但是:

  updateLocation: (lat, lon, animate = true) ->
      ...
      @get("controller").center_passageiro()
      # This gives me this error: Cannot call method 'center_passageiro' of null
      # And inspecting it i see that this.get('controller') is now returning null
我做错了什么

这是整个课程(使用coffeescript)

编辑

我的路线

Webapp.Router.map ->
  @route 'MapEmEspera', path: '/'
  @route 'MapEmChamada', path: '/mapa'
  @route 'cadastro', path: '/dados'
  @route 'novo_cadastro', path: '/cadastrar'
  @route 'chamada', path: '/chamar'
  @route 'espera', path: '/aguardando'
  @route 'taxista', path: '/taxista'
找到我的问题

generateMarker: -> # A generate method because I should create a global object
  $controller = @get("controller")
  unless Webapp.chamadaMarker? # if this object is already created ignore it
    Webapp.chamadaMarker = @
但这给了我一个问题,每当这个对象被销毁时,
ember.js
几乎不会将对象设置为
null
,这样每次我更改控制器时,我都会得到一个新视图,但全局对象不会更新

要解决此问题,我只需添加以下行:

geraMarker: ->
  $controller = @get("controller")
  if Webapp.chamadaMarker?
    Webapp.chamadaMarker = null
  Webapp.chamadaMarker = @

现在它工作正常了

你的路线是什么样子的?添加了我的路线,检查我的编辑还有一件事:)你能实际显示控制器或模型设置的位置吗?我的意思是备份
ChamadaMarkerView
My
ChamadaMarkerView
的控制器被设置在两个不同控制器
MapChamada
MapEspera
的模板上,我使用
{view ChamadaMarkerView}
渲染
updateLocation
在哪里被调用以及如何调用?
geraMarker: ->
  $controller = @get("controller")
  if Webapp.chamadaMarker?
    Webapp.chamadaMarker = null
  Webapp.chamadaMarker = @