【问题标题】:Meteor Router.go not changing Url even though page transitions即使页面转换,Meteor Router.go 也不会更改 URL
【发布时间】:2015-09-16 01:37:23
【问题描述】:

我遇到了一个非常奇怪的错误。我有一个按钮的点击事件设置,它通过 Router.go 发送到另一个模板。但是,页面会转换,它会传递数据,但 url 不会改变。所以我不能将参数用于下一个转换(这是用于注册流程)。

Template.tellUsAboutYourself.events({


'click .continueHide': function(){
    var mealsPerDay = $('.checkbox_check1:checked').val();
    var snacksPerDay = $('.checkbox_check2:checked').val();
    var typesOfSnacks = '';
    $('.checkbox_check3:checked').each(function(i){
      typesOfSnacks = typesOfSnacks + '4' + $(this).val();
    });
    var homeCooked = $('.checkbox_check4:checked').val();
    var sodaOften = $('.checkbox_check5:checked').val();
    var coffeeOften = $('.checkbox_check6:checked').val();
    var coffeeHow = $('.checkbox_check6a:checked').val();
    var juiceOften = $('.checkbox_check7:checked').val();
    var threeFoodsOften = '';
    $('.checkbox_check8:checked').each(function(i){
      threeFoodsOften = threeFoodsOften + '4' + $(this).val();
    });
    var activityLevel = $('.checkbox_check9:checked').val();

    var id = NutritionData.insert({name: this.name, last_name: this.last_name, ideal_weight: this.ideal_weight, height: this.height, current_weight: this.current_weight, gender: this.gender, age: this.age, mealsPerDay: mealsPerDay, snacksPerDay: snacksPerDay, typesOfSnacks: typesOfSnacks, homeCooked: homeCooked, sodaOften: sodaOften, coffeeOften: coffeeOften, coffeeHow: coffeeHow, juiceOften: juiceOften, threeFoodsOften: threeFoodsOften, activityLevel: activityLevel});
    console.log(id);

    Router.go('yourResults', {id: id});
  }
});

然后在 router.js 文件中我有以下内容:

Router.route('/yourResults/:id', {
  name: 'yourResults',
  trackPageView: true,
  layoutTemplate: false,
  data: function(){
    return NutritionData.find({_id: this.params.id}).fetch()[0]
  },
});

ID 是正确的,但由于某种原因它没有更改 url。以前有人遇到过这个问题吗?我一直在重构大量代码,到处寻找错误,但我的想法已经不多了。

谢谢

【问题讨论】:

  • 在你的路由中,layoutTemplate 不应该是字符串而不是false
  • 不,这不是问题,我将它用于许多其他模板。我确实删除了它以查看是否是它,但问题仍然存在。但仍然感谢您的回复。
  • 顺便说一句,您可以使用 NutritionData.findOne(this.params.id) 代替 NutritionData.find({_id: this.params.id}).fetch()[0] - 那方式会更短一点,更容易理解。
  • 在浏览器网址中yourResults/id 是否有效?
  • 是的,如果我手动输入它就可以正常工作

标签: javascript meteor iron-router


【解决方案1】:

我解决了这个问题,它与路由器无关。只是在极少数情况下,任何人都会遇到同样的噩梦场景,错误是由于一个会话变量在一个助手内的 for 循环内,该助手特别运行了很多次。这并没有给出任何错误,但它导致了各种奇怪的行为,包括路由器故障。

【讨论】:

    猜你喜欢
    • 2015-07-21
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    相关资源
    最近更新 更多