在Ember中,我可以使用以下代码:
App.Router.map(function() {
this.route('accomodations');
});
因此,如果转到/ accomodations,它将加载该视图。
我还可以添加:
App.Router.map(function() {
this.route('accomodations', { path: '/travel' });
});
因此,如果一个人去/ travel,它将进入相同的视图。
我希望能够使/ accomodations和/ travel转到同一视图?这可能吗?
我知道这:
App.Router.map(function() {
this.route('accomodations');
this.route('accomodations', { path: '/travel' });
});
将按照我的要求进行,但是如果他们去住宿,则应在网址中显示,它始终显示旅行。我什至不确定最后的代码是否是最佳实践。
在 router.js
App.Router.map(function() {
this.route('accomodations');
this.route('travel');
});
在 routes/travel.js
App.TravelRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo('accomodations');
},
});
您不必将它们放在单独的文件中(这就是我要放置它们的位置)。
这是在路由器上注册两条路由。选择其中一个作为“主要”路线,另一个作为“别名”路线。在这种情况下,accomodation
是主要路线,travel
也是其别名。用户访问时/travel
,他们将重定向到/accomodation
。
这将是完成此操作的默认/标准Ember方法,如果这对您来说听起来不错,那就去做吧。
如果由于某种原因您不希望发生重定向,并且希望用户看到的URL保持不变,但仍显示相同的内容并以相同的方式运行,则这也是可能的。
在这种情况下,您将在每个Ember单元中创建两个(路由,控制器,视图,模板)。聪明的方法是创建一个基类的路线,并同时拥有App.TravelRoute
和App.AccomodationRoute
平凡扩展它; 创建一个基类控制器,并且同时具有App.TravelController
与App.AccomodationController
平凡延伸它; 对于视图,如果有的话,也是如此。
模板OTOH有点棘手,因为无法扩展它们(据我所知)。因此,您需要做的是创建部分或组件(确定哪个更适合您),然后在两者中重用该部分/组件templates/accomodation.hbs
,templates/travel.hbs
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句