2015-09-15 32 views
0

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

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。有没有人有过这个问题?我一直在重构我的代码到处寻找错误,但我的想法已经枯竭。

谢谢

+0

在你的路线不应该'layoutTemplate'是一个字符串而不是'false'? –

+0

不,这是不是问题,我用这个许多其他模板..我删除它,看看它是否是这样,但问题仍然存在。但是,仍然感谢你的回应。 – socialight

+1

顺便说一句,你可以使用NutritionData.findOne(this.params.id)代替NutritionData.find({_ id:this.params.id})。fetch()[0] - 这种方式将会缩短一点并且更容易理解。 – naneri

回答

0

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