4

我想在一個特定的URL上顯示一個角材料對話框,同時保持以前訪問過的路線爲背景狀態。

因此,工作流程將是:

  1. 用戶訪問一個網頁,網址business/6/contacts。 (狀態:business.contacts
  2. 用戶訪問url business/6/checkout。 (state:business.checkout)

它應該保留聯繫人頁面在後臺,並使用給定的url在其上加載結帳模式。

但是,對於用戶訪問url business/6/settings的另一個工作流程,它應該將設置頁面保留爲背景並在用戶訪問business/6/checkout時加載檢出模式。

同時在任何地方點擊都應該關閉模式並加載回上一頁。

Contacts Page

Settings Page

Checkout Modal

回答

2

你應該把這些模式狀態的聯繫人和設置頁面的子狀態。在這個場景中,你的網址分別是business/6/contacts/checkout和business/6/settings/checkout。你必須在你的url中有一些標識符來分開這兩種情況。否則,當您直接從網址輸入網頁時,如果您使用相同的網址,則無法區分這兩種情況。

下面是一個例子:

var checkoutStateObject = { 
     url: '/checkout'.., 
     controller:"CheckoutModalCtrl" // same controller for below state 
     }; 

yourApp.state("business", { 
     url: "/business/:businessId"...}) //parent state 
.state('business.contacts', { 
     url: '/contacts'.. 
     }) 
.state('business.settings', { 
     url: '/settings'.. 
     }) 
.state('business.contacts.checkout', checkoutStateObject) 
.state('business.settings.checkout', checkoutStateObject) 
+1

或者,您可以改用控制器的OnEnter。 ('statename',{url:'..',templateUrl:'...',onEnter:['$ mdDialog',function($ mdDialog){$ mdDialog.alert({your code here})}]} – neftedollar

+0

我使用控制器將有助於減少代碼的重複,您可以在不同的狀態下重複使用相同的控制器等。 – cubbuk

+0

我喜歡這樣,但有什麼辦法可以在'business.checkout'狀態下實現此目的,否則如果有其他諸如「business.inventory」,「business.canvas」或許多其他我必須跟蹤它們中的每一個。@cubbuk –