为什么在路由更改时不发出 HTTP 请求?
Why isn't an HTTP request being issued when the route changes?
我有一个带有以下路由器的 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()
方法(没有任何内容写入控制台)。
我错过了什么?
尝试从命令行使用 ember cli 生成路由:
ember g route folder
它将在适当的位置创建您需要的所有文件,并相应地编辑router.js
。
通过这种方式,我认为您将获得一条可以回答 /folder
的路线。然后更改 router.js
,添加路由路径并点击 /folder/1
。如果没有任何反应,请检查控制台是否有错误,可能是 message
模型不存在。
如果我不得不猜测,您正在使用 {{#link-to 'index.folder' aModel}}
并且由于已经提供了模型,因此无需再次获取它。如果你这样做 {{#link-to 'index.folder' aModel.id}}
它会再次触发 model
挂钩,因为没有提供模型。
您可以在此 Twiddle 中看到模型挂钩在您的示例中通过直接访问路径 folder/12
调用(而不是通过 link-to)。
Routing Guide 对此进行了详细介绍。
我有一个带有以下路由器的 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()
方法(没有任何内容写入控制台)。
我错过了什么?
尝试从命令行使用 ember cli 生成路由:
ember g route folder
它将在适当的位置创建您需要的所有文件,并相应地编辑router.js
。
通过这种方式,我认为您将获得一条可以回答 /folder
的路线。然后更改 router.js
,添加路由路径并点击 /folder/1
。如果没有任何反应,请检查控制台是否有错误,可能是 message
模型不存在。
如果我不得不猜测,您正在使用 {{#link-to 'index.folder' aModel}}
并且由于已经提供了模型,因此无需再次获取它。如果你这样做 {{#link-to 'index.folder' aModel.id}}
它会再次触发 model
挂钩,因为没有提供模型。
您可以在此 Twiddle 中看到模型挂钩在您的示例中通过直接访问路径 folder/12
调用(而不是通过 link-to)。
Routing Guide 对此进行了详细介绍。