我有一条新文件的路线“/ new /”。我有一个按钮去那里,事件代码看起来像
Template.form.events({
"click #new": function() {
window.location.href = "/new/";
},
});
这有效但我不希望meteor重新加载页面,这就是发生的事情。相反,我想只是渲染路线。所以我尝试了这个
Template.form.events({
"click #new": function() {
Router.go("/new/");
},
});
现在绝对没有任何反应。即使我在使用相同顶级模板的另一条路线上,所有发生的事情都是URL已更改,但路线实际上并未重新渲染。
我尝试使用Tracker.Dependency修复此问题
var someDummyDep = new Tracker.Dependency; // also tried Deps.Dependency();
Template.form.onCreated = function() {
var instance = this;
instance.autorun(function() {
someDummyDep.depend();
});
});
Template.form.events({
"click #new": function() {
someDummyDep.changed();
Router.go("/new/");
},
});
我不确定如何使模板依赖,但由于我有其他模板使用onCreated函数使用反应性的东西,我认为这可能有效。它并没有改变。没有任何事情发生,没有任何东西可以重新渲染。
实际路线看起来像这样
Router.route('/new/', function() {
this.render('form');
});
我尝试将路线更改为此
Router.route('/new/', {
action: function() {
this.render('form');
},
data: function() {
someDummyDep.depend();
},
});
和这个
Router.route('/new/', {
action: function() {
this.render('form');
},
data: function() {
someDummyDep.depend();
return Math.random(); // ?? maybe if the data changes?
},
});
我也试过这个
Template.form.events({
"click #new": function() {
someDummyDep.changed();
Router.go("/new/", {}, {hash: Math.random().toString()});
},
});
哪个应该将网址设置为/new/#3243543623432
,但即使文档说它应该也不会设置哈希值。
如何让meteor / iron-router重新渲染?
答案 0 :(得分:0)
解决您的第一个问题,为您的路线命名并调用它,这不会重新加载页面
路由器Js
Router.route('/new/', function() {
this.render('form');
},{
name:'new'
);
<强> JS 强>
Template.form.events({
"click #new": function() {
Router.go('new')
},
});
如果你想传递一些id或其他任何东西
路由器Js
Router.route('/new/:something', function() {
this.render('form');
},{
name:'new'
);
<强> JS 强>
Template.form.events({
"click #new": function() {
Router.go('new',{something:123})
},
});
或只是一些哈希
Router.route('/new', function() {
this.render('form');
},{
name:'new'
);
Template.form.events({
"click #new": function() {
Router.go('new',{},{hash: Math.random().toString()});
},
});