我试图围绕Ember资源包裹我的头,但我打了一堵墙。看着导游像Rails + Ember.js我看到声明的资源路径的优先停留的方式是:正确的Ember.js资源路由声明
EmberTester.Router.map(function() {
this.resource('posts', function() {
this.resource('post', { path: ':post_id' });
});
});
这似乎很令人费解,不必创建一个嵌套的资源访问单个项目。但除了风格元素之外,真正的问题是这样的行为:从我在服务器端日志和客户端浏览器中看到的流量监控的这种路由会评估“帖子”路由和“帖子”的模型挂钩'路线。也就是说,考虑到模型挂钩:
EmberTester.PostsRoute = Ember.Route.extend({
model: function() {
return EmberTester.Post.find();
}
});
EmberTester.PostRoute = Ember.Route.extend({
model: function(params) {
return EmberTester.Post.find(params.post_id);
}
});
访问URL /posts/1
当两个模型钩子得到执行,所以服务器首先要求所有的帖子,然后POST_ID:1。我一定会错过这个明显的,但我不能把它放在什么地方。
是否有更简单的方法来声明Ember中的资源?我应该而不是申报资源,而是使用普通路线?
我错过了将路由嵌套与视图嵌套对齐的重要性。 route('posts'); route('post',{path:'/ posts /:post_id');'方法与'resource('posts',function(){route('post' ,{path:':post_id'});});'。第一个行为像Rails资源(从列表导航到详细信息并返回),但后者是正确的Ember资源,用于在客户端上同时显示列表和选定的详细信息*。 –