Backbone.js的提供navigate(fragment, [options])
方法,其Backbone.router對象,它不(每文檔)以下:骨幹路由器不尊重觸發= false選項
每當你在你的應用達到一個點您希望將其另存爲網址,請致電
navigate
以更新網址。如果您還想調用路由功能,請將trigger
選項設置爲true
。要更新網址而不在瀏覽器歷史記錄中創建條目,請將replace
選項設置爲true
。
因此,簡單地調用appRouter.navigate('page');
的網址可能會改變www.myapp.com/page
而不觸發相應的路由。但是,我發現我的路由器重定向到了URL ,並且也觸發了頁面路由,儘管默認情況下是trigger=false
。
因此,下面的代碼:
> home route
> page route
當預期的控制檯輸出應該只是::
$(function(){
var AppRouter = Backbone.Router.extend({
routes: {
'': 'home',
'page': 'page',
},
home: function() {
window.app.navigate('page', {replace: true});
console.log('home route');
},
page: function() {
console.log('page route');
},
});
window.app = new AppRouter();
Backbone.history.start({pushState: true});
});
導航到www.myapp.com時產生以下控制檯輸出
> home route
該方法似乎違反默認trigger
選項。這是實施中的錯誤,還是我誤解了某些東西?
它與'trigger:false'設置是否正常工作? – jakee
@jakee:不,window.app.navigate('page',{trigger:false,replace:true});'仍然產生相同的行爲。正如'window.app.navigate('page');'。 – Matm
從'Backbone.history.start'中取出'pushState:true'並用原始導航調用進行嘗試。我搜索了一下,'pushState:true'和'navigate'之間可能存在連接,無法正常工作。 – jakee