我有以下UI-Router状态定义(为简洁起见,仅限于适用的方面):
.state('ep.perma', {
url: '/:permalink',
params: {permalink: ''}, //default
templateUrl: 'views/conference/home.html',
controller: 'HomeCtrl'
})
.state('ep.perma.login', {
url:'/login',
templateUrl: 'views/dialogs/login.html',
controller: 'LoginCtrl',
})
.state('ep.perma.register', {
url: '/register',
templateUrl: 'views/dialogs/register.html',
controller: 'RegisterCtrl'
})
父ep.perma状态中的:permalink参数可以是任何东西,但让我们说它是'acb123'。每个登录和注册状态都有一个sref链接,可以在其html中切换到其他状态。如果你最初作为url转到父ep.perma状态,一切正常。您可以在登录和整天注册之间切换,并且:permalink参数将保持不变。
但是,如果您通过URL导航到登录或注册状态... / acb123 / login或... / abc123 / register最初一切正常。但是,如果你然后尝试从登录切换到注册或反过来(取决于你去的第一个URL)点击html中的SREF链接,:永久链接参数丢失。所以,我在... / abc123 / login,在logins html中注册的sref应该是... / abc123 / register,但是//注册。这是在任何一个URL的初始加载,但不是在那个html sref直接转到另一个。
只有通过URL直接登录或注册子状态才会发生这种情况。如果我去父母ep.perma URL ... / abc123最初一切都很好。
对于为什么会发生这种情况和/或如何解决此问题的任何想法?在发布之前我发现在这里挖掘我可以通过来自父级的解析传递param(s)然后在子节点中使用它们,但是如果不直接访问则不想结束... / abc123 / abc123 / login通过网址。我也不是100%明确如何在子状态下设置它们(仅根据示例中的控制器here
我需要用户能够通过直接URL登录或注册,并在具有初始指定的时间之间切换:永久链接参数保持不变,如果直接作为初始URL直接转到父级。
TIA
答案 0 :(得分:3)
想要帮助,给出一些想法,所以有a working plunkr。关键是,它按原样运行。您甚至可以导航到直接网址(在地址栏中),它仍然有效:
http://run.plnkr.co/plunks/rQRG6ZpXLWADX9md1YV5/#/bara/register
这些链接也可以使用:
@Transactional
检查here并尝试比较代码中的不同之处。或者让它破碎......继续它并修复它。