ToDo の例と同じ基本的な Router コードを使用していますが、いくつかの問題が発生しています。Router.navigateToItem(itemID) の場合、すべてが機能します。ただし、直接 URL (/inventory/itemId) を入力すると、Session 変数が設定されないため、直接 URL は機能しません。Router を直接 URL 経由でトリガーする方法を理解できます。助けてくれてありがとう。ここに私が取り組んでいるコードがあります:
var WebRouter = Backbone.Router.extend({
routes: {
"": "main",
"inventory/:itemId": "itemDetail"
},
main: function () {
Session.set("inventoryItem", null);
},
itemDetail: function(itemId) {
Session.set("inventoryItem", Items.find({_id:itemId}).fetch()[0]);
},
navigateToItem: function(itemId) {
this.navigate("inventory/"+itemId, {trigger: true});
}
});
Router = new WebRouter;
Meteor.startup(function () {
Backbone.history.start({pushState: true});
});
編集1:
pushState を実行しない場合、次のことに気付きました。
Backbone.history.start();
その後、すべてがうまくいくようです。ただし、URL にこのばかげたハッシュ記号があり、それがどこから来たのかわかりません: /#inventory/WsL7YZxiWk3Cv3CgT
近づいています... pushState がないと何が失われるのかもわかりません...
編集2:
別の失敗した試み:
window.onload= function(){
var url = window.location.pathname;
Router.navigate(url.substring(1,url.length), {trigger: true});
console.log(url.substring(1,url.length));
};
これはうまくいくと本当に思っていたのですが、うまくいきませんでした...