【发布时间】: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