Javascript 让meteor为“重新渲染路线”;新文件;
我有一个新文档的路径“/new/”。我有一个去那里的按钮和事件代码Javascript 让meteor为“重新渲染路线”;新文件;,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,我有一个新文档的路径“/new/”。我有一个去那里的按钮和事件代码 Template.form.events({ "click #new": function() { window.location.href = "/new/"; }, }); 这是工作,但我不想流星重新加载的网页,这是发生了什么。相反,我只想渲染路线。所以我试过这个 Template.form.events({ "click #new": function() { Router.go("/ne
Template.form.events({
"click #new": function() {
window.location.href = "/new/";
},
});
这是工作,但我不想流星重新加载的网页,这是发生了什么。相反,我只想渲染路线。所以我试过这个
Template.form.events({
"click #new": function() {
Router.go("/new/");
},
});
Template.form.events({
"click #new": function() {
someDummyDep.changed();
Router.go("/new/", {}, {hash: Math.random().toString()});
},
});
现在什么也没发生。即使我在使用同一顶级模板的另一条路由上,所发生的只是URL发生了更改,但该路由实际上没有重新呈现
我试着用追踪器来解决这个问题。依赖
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() {
Router.go("/new/");
},
});
Template.form.events({
"click #new": function() {
someDummyDep.changed();
Router.go("/new/", {}, {hash: Math.random().toString()});
},
});
它应该将URL设置为类似于/new/#324343623432
的内容,但是它没有设置哈希值,即使文档说应该设置
如何让meteor/iron router重新渲染?要解决您的第一个问题,请命名并调用您的路由,这样不会重新加载页面 路由器Js
Router.route('/new/', function() {
this.render('form');
},{
name:'new'
);
Template.form.events({
"click #new": function() {
Router.go('new')
},
});
Router.route('/new/:something', function() {
this.render('form');
},{
name:'new'
);
Template.form.events({
"click #new": function() {
Router.go('new',{something:123})
},
});
js
Router.route('/new/', function() {
this.render('form');
},{
name:'new'
);
Template.form.events({
"click #new": function() {
Router.go('new')
},
});
Router.route('/new/:something', function() {
this.render('form');
},{
name:'new'
);
Template.form.events({
"click #new": function() {
Router.go('new',{something:123})
},
});
如果你想传递一些id或其他信息
路由器Js
Router.route('/new/', function() {
this.render('form');
},{
name:'new'
);
Template.form.events({
"click #new": function() {
Router.go('new')
},
});
Router.route('/new/:something', function() {
this.render('form');
},{
name:'new'
);
Template.form.events({
"click #new": function() {
Router.go('new',{something:123})
},
});
js
Router.route('/new/', function() {
this.render('form');
},{
name:'new'
);
Template.form.events({
"click #new": function() {
Router.go('new')
},
});
Router.route('/new/:something', function() {
this.render('form');
},{
name:'new'
);
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()});
},
});