Emberjs为一条路由使用多个路径/ url
emberjs using multiple paths / urls for one route
在Ember我可以使用这个:
App.Router.map(function() {
this.route('accomodations');
});
所以如果有人去/accommodation它会加载那个视图
我还可以加上:
App.Router.map(function() {
this.route('accomodations', { path: '/travel' });
});
所以如果一个人去/travel,它会去同一个视图
我想要/住宿和/旅行去同一个景点?这可能吗?
我知道这个:
App.Router.map(function() {
this.route('accomodations');
this.route('accomodations', { path: '/travel' });
});
会按照我的要求去做,但如果他们去住宿,它应该在url中显示,它总是显示旅行。我甚至不确定最后一段代码是否是最佳实践。
你可以简单地交换两个路由路径定义行:
App.Router.map(function() {
this.route('accomodations', { path: '/travel' });
this.route('accomodations');
});
最后一个定义在{{link-to ...'accomodations'}}
和Route#transitionTo('accomodations')
的应用内转换中优先显示URL,尽管通过'/travel'输入应用将保留URL。(EmberJS 1.11.3, 2.12.2)
使用重定向
In router.js
App.Router.map(function() {
this.route('accomodations');
this.route('travel');
});
In routes/travel.js
App.TravelRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo('accomodations');
},
});
你不必把它们放在单独的文件中(这正是我要把它们放在的地方)。
的作用是向路由器注册两条路由。选择其中一条作为"主"路线,另一条作为"别名"路线。在本例中,accomodation
是主路由,travel
是它的别名。当用户访问/travel
时,他们被重定向到/accomodation
。
这将是默认的/标准的烬完成这一点的方式,如果这听起来不错,就这样做吧。
另一种可能的解决方案
如果您出于某种原因不希望重定向发生,并且希望用户看到的URL保持不变,但仍然显示相同的内容,并以相同的方式表现,这也是可能的。
在本例中,您将为每个Ember单元(路由、控制器、视图、模板)创建两个。聪明的方法是创建一个基类路由,并让App.TravelRoute
和App.AccomodationRoute
简单地扩展它;创建一个基类控制器,并有App.TravelController
和App.AccomodationController
平凡地扩展它;视图也一样,如果你有的话。
模板,OTOH,有点棘手,因为没有办法扩展它们(据我所知)。因此,您需要做的是创建部分或组件(决定哪个更适合您),然后在templates/accomodation.hbs
和templates/travel.hbs
中重用该部分/组件
- Ajax URL路径未替换当前URL
- 有没有一个Nodejs库可以序列化和反序列化命名组件的路径(比如URL路径名)
- javascript window.location在检查firebug时给了我一个错误的url路径
- 未捕获的InvalidValueError:setIcon:不是字符串;并且没有url属性;并且没有路径属性
- 在angularjs中动态路由url路径
- 为什么html src属性中的相对url是因为Javascript函数中的完整路径
- Angular sqlLite set css url()无法设置相对路径
- 来自URL的Regex URL路径
- 将 MVC 3 应用程序部署到 URL 文件夹已损坏 JavaScript 和内容路径
- 在相对于用户当前 URL 路径的不同路径中设置 Cookie
- 是否存在用于解析 URL 路径段(矩阵)参数的 JavaScript 库
- 如何将本地文件路径转换为文件::?/url在node.js中的安全性
- 从github url中查找用户、repo和路径
- 我可以使用URL路径提交参数吗
- 将URL路径与<a>attr('href')来动态更新.active类
- 在javascript中更改下拉框时更改路径URL
- Emberjs为一条路由使用多个路径/ url
- 附加路径url到Javascript对象
- React路由器的公共路径url
- 没有获得正确的 URL 路径 - URL 路径是:/favicon.ico