Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 让meteor为“重新渲染路线”;新文件;_Javascript_Meteor_Iron Router - Fatal编程技术网

Javascript 让meteor为“重新渲染路线”;新文件;

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

我有一个新文档的路径“/new/”。我有一个去那里的按钮和事件代码

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()});
   },
});