我相当陌生。我有一个现有的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')
,但这会让我错误。
我现在已经被困了一天而且我一无所知。
我会感激任何指导和帮助。感谢
答案 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将相关路由,控制器等注入特定对象类的实例。
无论如何,请看看旋转器,如果需要,请多询问。如果可以,我会很乐意提供帮助。