为什么路由更改时不会发出HTTP请求?

时间:2017-08-29 21:50:35

标签: javascript ember.js

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

我错过了什么?

2 个答案:

答案 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模型不存在。