2011-10-14 39 views
0

1)我的JavaScript應用程序應該使用哪種JavaScript hashchange /歷史庫/方法?
2)如何使用該方法實現這3件事?今天我應該使用哪個JavaScript hashchange /歷史庫(2011)?

A)當頁面加載時我想解析url散列/參數並設置初始應用程序狀態。
具體來說,我的應用程序由一個骨幹收藏有兩個型號,其具有的屬性,如SELECTEDCOUNTRY,selectedYear的等
(我不認爲我可以使用Backbone.Router因爲這是一個非常個性化的可視化應用程序複雜國家?)

B)我想建立一個hashchange監聽器或類似的,讓我更新的應用狀態correspondigly

C)在我想更新網址骨幹集合變化事件。重要提示:我想在執行此操作時臨時移除hashchange偵聽器,以便不存在反饋循環。

注: 的應用已經依靠一些HTML5技術,因此該解決方案並不一定是與舊瀏覽器兼容。但正如我以前用這種掙扎的「反饋環」的一部分是非常重要的...

謝謝:)

+0

我現在在空閒時間工作。它還沒有工作,但它會做所有你想要的事情(支持歷史對象和hashchange作爲後備)。如果你想留意它或貢獻:https://github.com/nathanmacinnes/Historic –

+0

我總是懷疑,像這樣的問題,如果人們使用散列來傳達真正應該添加到查詢字符串的數據。 – Blazemonger

+0

@ mblase75當然他們是...這就是爲什麼它有點破解。在哈希中做這件事的原因是,你不希望用戶每次做任何事情都不得不重新加載頁面。 –

回答

3

,因爲你已經在使用骨幹,我要堅持骨幹Router對象。使用應用程序中已有的內容會比較容易,而不是試圖在組合中添加新內容。

至於你的反饋迴路問題,我已經通過never firing my router methods from code解決了這個問題。

它的要點是讓我的JavaScript對象控制應用程序的狀態,併爲我完成工作。當我撥打router.navigate時,我從不通過true作爲第二個參數。我只需撥打router.navigate來響應我的應用程序中的狀態更改,即可在瀏覽器窗口中更新散列片段。這是事情:這完全是對應用程序狀態發生變化的響應。我從不使用router.navigate來更改我的應用程序的狀態。

希望可以幫到

+0

聽起來不錯。這將與我的設置一起工作嗎?模型1:年份= 1950,國家= SE,模式= A。模型2:年份= 1980,國家=否,模式= B。 STATE => #m [0] [year] = 1950&m [1] [year] = 1980或類似。或者它會是什麼樣子?謝謝 - 我會閱讀博客文章! :) – dani

+0

應該可以正常工作。主幹路由器可以在類似路由​​的末端處理參數。 –

+0

然後我檢查你的答案:) – dani