我正在向网站添加新页面,并且正在复制网站中已经存在并且当前正在工作的代码。为什么FlowRouter.getParam在其他地方都可以正常显示?
client / JobInvoice.js
import { Invoices } from '../../../imports/api/Invoice/Invoice';
Template.InvoicePage.onCreated(function(){
const user = FlowRouter.getParam('_id');
console.log(user);
this.subscribe('invoices', user);
});
lib / router.js
Accounts.onLogout(function(){
FlowRouter.go('home');
});
FlowRouter.notFound = {
action: function() {
FlowRouter.go('/404');
}
};
const loggedIn = FlowRouter.group({
prefix: '/secure'
});
loggedIn.route( '/invoice', {
name: 'invoice',
action() {
BlazeLayout.render('FullWithHeader', {main:
'InvoicePage'});
}
});
我想念什么?
答案 0 :(得分:0)
FlowRouter允许您使用动态属性(path-to-regexp)定义路由,这些属性通常代表文档ID或其他动态属性。
例如
FlowRouter.route('/invoice/:docId', { ... })
将定义与/invoice/9a23bf3uiui3big
之类的模式匹配的路由,并且通常使用它来呈现单个文档的模板。
现在,如果您想在相应模板中以文档docId
的形式访问文档ID,则可以使用FlowRouter.getParam('docId')
,它将返回到上述路由9a23bf3uiui3big
。
由于您的路线定义缺少动态属性,因此FlowRouter.getParam
不会接收任何参数。
可能的解决方法是
loggedIn.route( '/invoice/:_id', {
name: 'invoice',
action() {
BlazeLayout.render('FullWithHeader', {main:
'InvoicePage'});
}
});
以与其他模板相同的方式访问它。
读物
https://github.com/kadirahq/flow-router#flowroutergetparamparamname
答案 1 :(得分:0)
这就是我最终要做的事,并且有效。
loggedIn.route( '/invoice/:id', {
name: 'invoice',
action() {
BlazeLayout.render('FullWithHeader', {main: 'InvoicePage'});
}
});