我有一个在多个路线上使用的组件。 现在在该组件中,我想使用来自ember-gestures库的swipeLeft和swipeRight事件。
当我尝试提醒消息时,他们会被两个事件解雇。但是当我试着奔跑的时候
this.transitionTo('someRoute', dynamicPart)
然后它就不会被解雇。
我收到Uncaught TypeError: this.transitionTo is not a function(…)
错误。
如何使用Ember-component中的transitionTo()
?
我有3条路线(游览,时间表,soc),并且在ui上有3个标签。 我每次都在调用activity-details组件来显示该活动的所有细节。这是代码: // activity-details :: component
next: Ember.computed('listOfThisTypeOfActivities', 'currentActivityId', function(){
|> Logic to find out the next activity
|> Simply grabbing the currentActivityId and then getting the next item from the listOfThisTypeOfActivities
}),
// Similarly I have 'prev' computed property
swipeRight(next){
console.log('Right Swipe' ); // this works
// alert(next.id);
this.transitionTo('schedule', next.id);
},
swipeLeft(e){
this.transitionTo('schedule', prev.id); // this doesn't work
},
我想在这些活动之间滑动。即如果我在schedule/1
然后在滑动事件上,我应该导航到schedule/2
路线。
另一个问题是=>我有3种类型的活动:社交活动,时间表,旅游(每个都有自己的路线)。因此,在组件本身中编写next
和prev
计算属性似乎是错误的。
我们也不使用ember-data,这个活动列表来自服务。
每条路线(/ tours /,/ schedule /)都有自己的活动清单(即旅行和时间表都只是活动)。
在@torazaburo和@Patsy Issa以及@ kumkanilam的建议之后:
1.我已将next
和prev
计算属性移动到控制器。
2.我已经通过关闭动作将路由导航的逻辑移动到控制器。
这一切都在发挥作用。
虽然我在所有3个控制器中编写了大致相似的代码,但我确信它可以改进。我只是不知道如何。但我很高兴能够让它发挥作用。
非常感谢@torazaburo,@ patsyIssa和@kumkanilam的反馈,并向我展示了更好的方式。
答案 0 :(得分:1)
this.transitionTo
是一种特定于路线的方法。在引擎盖下它调用私人Ember路由器服务。您将需要将私有路由服务注入到组件中(一旦释放新的Ember路由器,可能会中断)或将您的转换请求发送到路由中的操作。