2013-10-18 18 views
0

我有一個嵌套的視圖和嵌套狀態的父狀態。嵌套視圖是一個IP列表,這是一個昂貴的調用服務器應該只發生在第一次加載。點擊IP應該更新URL並導致traffic.details狀態更新,但不更新列表。該網址應如下所示:/traffic/details?ip=127.0.0.1在UI-Route中,如何防止父狀態銷燬嵌套視圖?

父網址爲/traffic?ipip可用於所有嵌套狀態。後做:

$state.transitionTo("traffic.details", { ip: "127.0.0.1"}); 

兩種方案:

  • 它將更新網址爲目的而破壞並重新創建嵌套的意見。

  • 如果我preventDefault()在父狀態$scope.$on('$stateChangeStart')它不會重新加載嵌套的意見,並重新加載traffic.details狀態(預期的行爲),但它不會更新URL。

如何在不更新其嵌套視圖的情況下更新父狀態的URL?

回答

0

無法重新加載所有子級別時無法更新父級網址。將一個狀態放置在父項的下方,但最重要的是將其設置爲抽象,並且它只是'?ip'的url,然後從父狀態的URL中刪除相同的位。

+0

我做了類似於你的建議。我向所有子路由添加了'?ip',在父作用域中留下了共享邏輯並刪除了任何提及的event.preventDefault()。我認爲你的版本通過在相同的作用域/路由中使用'?ip'和共享代碼來使得它更加清晰。 –

+0

當用戶刷新頁面時,以上不起作用。這是因爲在範圍從路由可用之前加載父範圍。我將不得不嘗試你提到的方法。 –

+0

您對我的解決方案有任何好運嗎? –