2015-11-30 64 views
2

我已經爲新文檔創建了路由「/ new /」。我有去那裏和事件代碼的按鈕,看起來像獲取流星重新渲染「新文檔」的路由

Template.form.events({ 
    "click #new": function() { 
    window.location.href = "/new/"; 
    }, 
}); 

這個工作,但我不想流星重新加載這是發生了什麼頁面。相反,我只想渲染路線。所以我試過這個

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

哪個應該將URL設置爲類似/new/#3243543623432的東西,但即使文檔說明它應該也不會設置散列。

我應該怎麼做流星/鐵路由器重新渲染?

回答

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