繁体   English   中英

如何修复FlowRouter.getParam被'undefined'

[英]How to fix FlowRouter.getParam from being 'undefined'

我正在向网站添加一个新页面,我正在复制已经存在的代码,目前正在该网站上工作。 为什么FlowRouter.getParam在其他地方工作时未定义?

客户机/ 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'});
    }
});

我错过了什么?

FlowRouter允许您定义具有动态属性( path-to-regexp )的路由,这些属性通常表示文档ID或其他动态属性。

例如

FlowRouter.route('/invoice/:docId', { ... })

将定义一个匹配/invoice/9a23bf3uiui3big等模式的路由,您通常使用它来为单个文档渲染模板。

现在,如果您想在相应的模板中访问文档ID作为param docId ,您将使用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

这是我最终做的,它的工作原理。

loggedIn.route( '/invoice/:id', {
name: 'invoice',
action() {
    BlazeLayout.render('FullWithHeader', {main: 'InvoicePage'});
}
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM