不知道如何强制主干正确导航到这样的路由:
页/#/频道/名称
代替
页面#频道/名称
或者
页面#/频道/名称
我的路由器使用一个主要模型并观察其状态,因此在这种情况下,路由器应该能够在不触发其事件的情况下更改 URL。
我试着这样做:
router.navigate("#/channel/" + encodeURIComponent(appState.data.channelName), { trigger: false });
但在这种情况下,“触发器:假”不起作用,所以我收到了不受欢迎的路由器事件调用。
Backbone.history 根设置为“/”,我目前没有使用 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)
}
});
}
});