从 Ember 对象过渡到路由的操作
Transition to route's action from Ember object
我是 ember 的新手。我有一个现有的 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')
但它会抛出错误。
我在这上面卡了一天,一头雾水。
如有任何指导和帮助,我将不胜感激。谢谢
您遇到的问题是您正试图从 Ember.Object
命名呼叫服务中触发路由操作或触发转换。您创建的代码不清楚您的自定义对象的创建位置;由于更改对象的 属性 更新等而触发观察者的位置。
尽管如此,我还是尝试为您提供一个有效的 example。如果你打开 twiddle,你会看到我在 index.js
路由中创建了一个 my-object
实例,并将它作为 model
传递给 my-component
。当您单击 my-component.hbs
内的按钮时。 my-object
个实例 dummyVariable
被切换并且 my-object
中的观察者执行。这里棘手的部分是我将 index
路由本身作为 ownerRoute
属性 传递给 my-object
实例;这样我就可以从 my-object.js
中使用
触发 index
路由的 dummyAction
ownerRoute.send('dummyAction');
以便执行相关操作并执行到 my-route
的转换。虽然,我相信这可能会解决您的问题;我对设计不太满意。我不认为,这是 Ember.Objects 了解路由、操作、控制器等的好方法。我认为正确的方法是从这个构造中观察对象的相关属性,并自行执行必要的操作。此外,您可能会考虑创建 service
而不是对象,并将服务直接注入您的路由,而不是创建 class 扩展 Ember.Object
的实例。如果你必须从 Ember.Object
扩展,你可以在需要时使用 instance-initializer 将相关的路由、控制器等注入特定对象 class 的实例。
总之,大家多多看看,有需要的再多问。如果可以的话,我很乐意提供帮助。
我是 ember 的新手。我有一个现有的 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')
但它会抛出错误。
我在这上面卡了一天,一头雾水。
如有任何指导和帮助,我将不胜感激。谢谢
您遇到的问题是您正试图从 Ember.Object
命名呼叫服务中触发路由操作或触发转换。您创建的代码不清楚您的自定义对象的创建位置;由于更改对象的 属性 更新等而触发观察者的位置。
尽管如此,我还是尝试为您提供一个有效的 example。如果你打开 twiddle,你会看到我在 index.js
路由中创建了一个 my-object
实例,并将它作为 model
传递给 my-component
。当您单击 my-component.hbs
内的按钮时。 my-object
个实例 dummyVariable
被切换并且 my-object
中的观察者执行。这里棘手的部分是我将 index
路由本身作为 ownerRoute
属性 传递给 my-object
实例;这样我就可以从 my-object.js
中使用
index
路由的 dummyAction
ownerRoute.send('dummyAction');
以便执行相关操作并执行到 my-route
的转换。虽然,我相信这可能会解决您的问题;我对设计不太满意。我不认为,这是 Ember.Objects 了解路由、操作、控制器等的好方法。我认为正确的方法是从这个构造中观察对象的相关属性,并自行执行必要的操作。此外,您可能会考虑创建 service
而不是对象,并将服务直接注入您的路由,而不是创建 class 扩展 Ember.Object
的实例。如果你必须从 Ember.Object
扩展,你可以在需要时使用 instance-initializer 将相关的路由、控制器等注入特定对象 class 的实例。
总之,大家多多看看,有需要的再多问。如果可以的话,我很乐意提供帮助。