从Ember对象转换到路由的动作

时间:2017-03-28 10:08:17

标签: object ember.js routing transitions

我相当陌生。我有一个现有的Ember应用程序,我需要在其中实现一个功能。我有一个Ember对象,如下所示

`import Ember from 'ember'`

CallService = Ember.Object.extend

 ... other code here

 _updateConnectedLeadId: (->
    console.log "Do i get here??"

    **pass the route action here**

  ).observes('some_other_here')
`export default CallService`

不幸的是,我无法将整个代码放在这里。

我的路线看起来像

ApplicationRoute = Ember.Route.extend
  actions:
    showLead: ->
      console.log data
      console.log "did i get here?"
      @transitionTo('dashboard')

`export default ApplicationRoute`

我尝试在我的方法中使用@send('showLead')@sendAction('showLead'),但没有运气。

我的主要目的是在显示console.log "Do i get here??"后进行转换。我不确定我是否在这里正确的方式。

我也尝试直接使用@transitionTo('dashboard')@transitionToRote('dashboard'),但这会让我错误。

我现在已经被困了一天而且我一无所知。

我会感激任何指导和帮助。感谢

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您尝试触发路由操作或从Ember.Object命名的呼叫服务中触发转换。您创建的代码不清楚您的自定义对象的创建位置;由于更改了对象的属性更新而触发观察者的位置,等等。

然而,我试图为你提供一个有效的example。如果您打开旋转,您会看到我在my-object路线中创建了index.js个实例,并将其作为model传递给my-component。单击my-component.hbs中的按钮时。切换my-object个实例dummyVariable并执行my-object内的观察者。这里棘手的部分是我将index路由本身作为ownerRoute属性传递给my-object实例;这样我就可以在index内触发dummyAction路线my-object.js

ownerRoute.send('dummyAction');

以便执行相关操作并执行到my-route的转换。虽然,我相信这可能会解决你的问题;我对这个设计并不满意。我不认为,这是Ember.Objects了解路线,动作,控制器等的好方法。我认为正确的方法是从这个构造中观察对象的相关属性,并通过它们自己执行必要的操作。此外,您可以考虑创建service而不是对象,并将服务直接注入到您的路线中,而不是创建扩展Ember.Object的类的实例。如果必须从Ember.Object扩展,则可以根据需要使用instance-initializer将相关路由,控制器等注入特定对象类的实例。

无论如何,请看看旋转器,如果需要,请多询问。如果可以,我会很乐意提供帮助。