【问题标题】:pathFor for iron router meteorpathFor 用于铁路由器流星
【发布时间】:2015-08-11 01:09:51
【问题描述】:

我对这个问题很困惑。 我有两个路径如下的模板:

Router.route('/companyDataManagement',{
        path:['/companyDataManagement','/companyDataManagement/:_id'],
        name: 'companyDataManagement',
        yieldTemplates:{
            'companyData':{to:'showCompanyData'},
            'companyDetails':{to:'showCompanyDetails'}
        }
});

这工作得很好。但是我如何在这个模板中使用pathFor<a href="{{pathFor companyDataManagement}}">Click</a> 不起作用

【问题讨论】:

  • 您是否尝试过使用两条单​​独的路线?每条路径一个?
  • 这将如何解决问题?
  • Router.route('/companyDataManagement/:_id',{ 然后<a href="{{pathFor companyDataManagement _id=this._id}}">Click</a> 怎么样。所以基本上这样做:stackoverflow.com/questions/30467393/…
  • 也看看这个答案:stackoverflow.com/a/30508647/1011724 关于 carlosccomp 的 2 路线建议
  • @Avishek gurung,我真的不知道它在代码中是如何工作的,但也许助手 pathFor 无法生成 url,因为他无法选择哪个路径是最佳模式。这只是一个猜测(抱歉英语不好)

标签: javascript meteor iron-router


【解决方案1】:

您能否确认链接中的 companyDataManagement 是从助手传递的名称,还是您打算将其作为所调用路由的名称?如果是后者,则需要用单引号封装,如下所示

<a href="{{pathFor 'companyDataManagement'}}">Click</a>

如果您想将 :_id 传递到 pathFor 这来自链接所在的数据上下文,如果数据上下文不提供 id 您需要声明一个对象以传递到帮助器内的模板:

Template.yourTemplate.helpers({
    myContextHelper: function(){
        return {_id:'XXXXXXXXX'}
    }
});

{{#with myContextHelper}}
    <a href="{{pathFor 'companyDataManagement'}}">Click</a>
{{/with}}

应该给你/companyDataManagement/XXXXXXXXX

您还可以使用例如 query="q=1" 或 query=qstring 传入查询、哈希和数据变量,其中 qstring 是来自帮助程序的对象或 myContextHelper 对象中的字段。

<a href="{{pathFor 'companyDataManagement' query=qstring }}">Click</a>

此外,并非严格与问题有关,但希望对您有所帮助,从您的代码中看起来就像您只是将 :id 作为路径中的可选路由部分,并且模板本身不需要 :_id 来被指定,在这种情况下你可以只使用 ?使部分可选:

path:'/companyDataManagement/:_id?',

您也可以将其用作路由的开始参数,以消除在函数中指定路径的麻烦:

Router.route('/companyDataManagement/:_id?',{

希望这会有所帮助!如果您可以发布更多围绕它的代码,请告诉我上述内容是否无法帮助解决问题

【讨论】:

  • 非常简单的解决方案,但在 SO 中大放异彩。谢谢你们。让我关闭这个问题。是的,这一切都是为了让“_id”成为可选。
猜你喜欢
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多