我正在使用 slugged URLs 来获得更清晰的 URLs 来从这个转换:
对此:
问题是,如果我要通过直接 slugged url ( http://mydomain.com/#/posts/first-awesome-post ) 直接访问该页面,我会得到一个空白页面。
这是我所拥有的:
App.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});
App.Post.FIXTURES = [{
id: 1,
name: 'First Awesome Post',
slug: 'first-awesome-post'
}];
App.PostRoute = Em.Route.extend({
model: function(params) {
return App.Post.find(params.post_id);
},
setupController: function(controller, model) {
this._super.apply(this, arguments);
},
serialize: function(model, params) {
return { post_id: model.get('slug')};
},
});
我尝试了以下方法:
- 替换
params.post_id
为并在我的浏览器App.PostRouter
中params.post_slug
输入以下 URL http://mydomain.com/#/posts/first-awesome-post;结果:页面 CSS 和 HTML 加载,但 id #1 的数据未加载(即未调用模型挂钩) - 摆脱序列化功能并在我的浏览器中输入以下 URL http://mydomain.com/#/posts/1;结果:一切正常(CSS、HTML 和数据加载完美)
我可以知道在这种情况下我做错了什么吗?
PS 我目前正在使用 EmberJS 版本 1.0.0-rc.6