我正在尝试使用解析器系统来解析/ posts / create的模型。
我的路由器映射如下:
this.resource('posts', function () {
this.route('create', {
path: '/create'
});
this.route('index', {
path: '/:post_id'
});
});
当我转到/ posts / 1234路线时,我会调用解析器上的resolveModel方法,但是当我转到/ posts / create时,它不是。我假设我在这里缺少一个命名约定,但我想得到/ posts / create使用解析器而不是创建一个PostsCreateRoute只是为了在模型钩子中有一个衬垫。
任何帮助将不胜感激。我很想知道我是否也接近这个错误。谢谢!
答案 0 :(得分:2)
resolveModel
因为ember对包含使用约定:model_id
的路径参数的路由有特殊约定。当ember看到它时,它将尝试使用路径参数的id找到模型的实例。您可以在此处https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/system/route.js#L871-L888看到此行为。
第二条路线没有路径参数,因此ember的默认行为是什么都不做。如果要在用户输入该URL时创建帖子模型的新实例,则需要声明自己的模型函数来执行此操作。例如:
App.PostCreateRoute = Ember.Route.extend({
model: function() {
return this.store.createRecord('post', {});
}
});