Object 过渡至路线';来自余烬对象的操作

Object 过渡至路线';来自余烬对象的操作,object,ember.js,routing,transitions,Object,Ember.js,Routing,Transitions,我对恩伯相当陌生。我有一个现有的余烬应用程序,我需要在其中实现一个功能。我有一个余烬对象如下 `import Ember from 'ember'` CallService = Ember.Object.extend ... other code here _updateConnectedLeadId: (-> console.log "Do i get here??" **pass the route action here** ).observes('

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

`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“我到这里了吗?”
后进行转换。我不确定我是不是走对了路

我还试着直接使用
@transitiono('dashboard')
@transitionorote('dashboard')
,但它会给我带来错误

我已经在这件事上耽搁了一天,我不知所措


我将感谢任何指导和帮助。谢谢

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

尽管如此,我还是试着为你提供一份工作。如果打开这个旋转,您将看到我在
index.js
路由中创建了一个
my object
实例,并将其作为
model
传递给
my component
。单击
my component.hbs
中的按钮时。切换
my object
实例
dummyVariable
,执行
my object
中的观察者。这里棘手的部分是,我将
索引
路由本身作为
ownerRoute
属性传递给
我的对象
实例;这样我就可以用

ownerRoute.send('dummyAction');
执行相关操作并执行到
my route
的转换。虽然,我相信这可以解决你的问题;我对这个设计不太满意。我不认为这是Ember.对象了解路由、动作、控制器等的好方法。我认为正确的方法是从这个构造中观察对象的相关属性,并自己执行必要的动作。此外,您可以考虑创建一个<代码>服务>代码>而不是一个对象,并将服务直接注入到您的路由中,而不是创建类扩展为<代码>烬。对象< /代码>的实例。如果您必须从
Ember.Object
进行扩展,您可以根据需要使用


不管怎样,请看一看这个游戏,如果你需要的话,多问一些。如果可以的话,我很乐意帮忙

也许你可以在这里上传你的代码,@amaia,我真的不认为这是必要的。我已经提供了相关的重要代码。我会等待更多的回答。谢谢你的链接。谢谢你花时间创建一个工作演示。我不太了解这些标准,但我想我同意你的观点:“我不认为,这是一个让Ember.Object了解路线、动作、控制器等的好方法。”请你解释一下你的观点好吗“我相信正确的方法是从这个结构中观察对象的相关属性,并自己执行必要的操作。此外,您可以考虑创建服务而不是对象,并将服务直接注入到您的路由中,而不是创建扩展Boo.Objor对象类的实例。“@Aakanksha我有更多的时间肯定会解释的,我很感激。谢谢,我相信当您扩展
Ember.Object
时,这个类应该更好地封装它自己的行为(函数)和数据(属性)。它应该是可重用的,您可以考虑在不同的模块、应用程序中重新使用它。另一方面,一个烬路由器,控制器主要是针对该应用程序。因此,扩展Ember.Object的类最好在不了解路由、控制器等的情况下独立工作。另一方面,路由/控制器很可能会创建该特定类的实例;因此,您可以观察他们创建或知道的实例的属性。事实上,您所询问的案例没有一个标准可遵循。这是我自己关于余烬的经验,其他人应该提出一些不同的建议;但是,当一个类需要了解特定的路由器、控制器等时,我更喜欢从
Ember.Service
扩展,而不是
Ember.Object
。服务是单例的,您不需要创建实例来使用它们。此外,路由/控制器(由Ember基础设施管理的其他实例)应该直接注入到服务中,当然,服务应该注入到由Ember管理的其他类中。