2017-08-29 92 views
0

我有以下的路由器灰烬项目:路由发生变化时,为什么不发出HTTP请求?

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()方法(没有任何内容写入控制台)。

我错过了什么?

回答

2

如果我不得不猜测,您正在使用{{#link-to 'index.folder' aModel}}并且由于已经提供了一个模型,所以不需要再次获取它。如果你做了{{#link-to 'index.folder' aModel.id}}它会再次触发model挂钩,因为没有提供模型。

您可以在此Twiddle中看到模型挂钩在您的示例中直接访问路径folder/12(不通过链接)。

Routing Guide对此进行了详细说明。

+0

啊哈!很好的猜测和感谢链接。 –

0

尝试使用烬CLI命令行来生成路线: ember g route folder

这将创造一切,你在适当的位置所需要的文件,并相应地编辑router.js

这样我想你会得到一个路线,将回答/folder。然后更改router.js,添加路线的路径并点击/folder/1。如果没有任何反应,请检查控制台是否有错误,可能是message型号不存在。

相关问题