我有一个Ember项目,包含以下路由器:
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType,
rootURL: config.rootURL
});
Router.map(function() {
this.route('index', {path: '/'}, function() {
this.route('folder', {path: 'folder/:folder_id'});
});
});
export default Router;
routes/index/folder.js
的内容如下:
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
console.log(params);
return this.store.query('message', {folder_id: params.folder_id});
}
});
我的期望是当路由更改为/folder/1
时,将调用model()
方法来获取文件夹的消息。
然而,这不会发生。路径确实发生了变化,但永远不会调用model()
方法(没有任何内容写入控制台)。
我错过了什么?
答案 0 :(得分:2)
如果我不得不猜测,你正在使用{{#link-to 'index.folder' aModel}}
并且由于已经提供了模型,因此无需再次获取它。如果您执行{{#link-to 'index.folder' aModel.id}}
,则会再次触发model
挂钩,因为未提供模型。
您可以在此Twiddle中看到在您的示例中调用模型挂钩,直接访问路径folder/12
(而不是通过链接)。
Routing Guide详细介绍了这一点。
答案 1 :(得分:0)
尝试使用命令行中的ember cli生成路由:
ember g route folder
它会在适当的位置创建您需要的所有文件,并相应地修改router.js
。
这样我觉得你会得到一条回答/folder
的路线。然后更改router.js
,添加路径路径并点击/folder/1
。如果没有任何反应,请检查控制台是否存在错误,可能是message
模型不存在。