不知道如何強制骨幹正確地瀏覽到這樣的路線:中骨幹路由器導航到... /#/ <route>而不觸發路由器事件。如何?
頁/#/渠道/名稱
代替
頁#槽鋼/名稱
或
頁#/渠道/名稱
我的路由器的工作原理與一個主模型,觀察其狀態,所以路由器應該能夠改變URL,而不會觸發其事件在這種情況下。
我試着這樣做:
router.navigate("#/channel/" + encodeURIComponent(appState.data.channelName), { trigger: false });
但在這種情況下,「觸發:假」沒有工作,所以我得到的路由器事件的不受歡迎的呼叫。
Backbone.history root設置爲「/」,我目前沒有使用pushState。
見下面的代碼示例:
var Router = Backbone.Router.extend({
routes: {
"": "index",
"index": "index",
"channel/:channelName": "changeChannel"
},
initialize: function (options) {
var router = this;
if (options.model) {
router.model = options.model;
} else {
//TODO: throw error
return;
}
//update url in cases of model channelSelection changes
router.model.on("stateChangeAccepted", function (appState) {
switch (appState.mode) {
case "channel":
router.navigate("/channel/"
+ encodeURIComponent(appState.data.channelName), { trigger: false });
break;
}
});
},
index: function() {
var router = this;
router.model.trigger("stateChangeRequest", {
mode: "channel",
data: {
channelIndex: 0
}
});
},
changeChannel: function (channelName) {
var router = this;
router.model.trigger("stateChangeRequest", {
mode: "channel",
data: {
channelName: decodeURIComponent(channelName)
}
});
}
});
避免使用引導斜槓,所以不要使用/ page#/ channel /而是使用/ page#通道。它在Backbone文檔中記載,最好這樣做。這可能會解決你的問題 –
它工作正常,沒有斜槓,我知道。我只想獲得頁面/#/頻道網址,類似於Twitter –