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 –