我有一条看起来像这样的路线:
@.route 'dailyTotal',
path: '/report/:year/:month/:day'
template: 'dailyTotal'
layoutTemplate: 'report'
data: ()-> this.params
在我的控制器中是这样的:
Template.dailyTotal.bevTable = ->
params = this
# a whole bunch more...
在控制器中,我使用这些参数来做一些与我的问题无关的相当复杂的东西,因为当你从一条动态路线导航到另一条动态路线时,它不会重新渲染(或执行?)。
例如,如果我从“/ report / 2014/05/21”导航到“/ report / 2014/05/22”,则没有任何反应。只有当您来自完全不同的路线时才会执行该路线(例如,“/ report / totals”)。
当我在控制器中放置断点时,它永远不会得到这个,但我看到params在数据函数中发生了变化。我的直觉告诉我,我需要以某种方式强制控制器动作运行,但从IronRouter或Meteor文档中都不明显。有什么建议吗?
答案 0 :(得分:1)
我尝试通过您在上面发布的路线创建简单的流星应用来重现您的问题,但没有运气,IronRouter正确处理了这种情况。 请将您的代码与以下内容进 https://github.com/parhelium/meteo-so-ironrouter-dynamic-routes
IronRouter正确检测同一路线中的参数变化,因此首先进入 / report / 2014/05/21 ,然后进入 / report / 2014/05/21 正确重新渲染模板。
应用程序结构是使用em工具生成的,它生成了很多目录和文件,但在这种情况下只有少数很重要:
both/router/routes.js
client/controllers/report.js
client/views/report/*
当您在控制器中传递this.params
到data
字段时,您的路线模板中的使用情况为:
{{year}}/{{month}}/{{day}}