我是Angular的新手,我需要一些router-ui包的帮助。
我的几个州都是由动态值组成的:
.state('state-name', {
url: `${dynamicValue}/state-name`,
abstract: true,
template: '<ui-view/>',
data: {
layout: {
footer: false
}
},
resolve: {
context: resolveContext
},
});
此值通过用户从中选择选项的单选按钮传递。这一切都很好,但我遇到的问题是,如果用户在选择值后输入了错误的URL,它会将它们重定向回第一个无线电选项,而不是维持他们的选择。这是由于我设置的条件,如果用户没有选择选项。
E.g。
可用选项:
1. 1234
2. 5678
如果我选择:
5678
它会生成以下网址:
domain.com/5678/state-name
如果我触发404:
domain.com/5678/state-name/xyxyxyxyxxy
重定向到:
domain.com/1234/state-name
而不是:
domain.com/5678/state-name/
我试图修改otherwise()
功能,但没有太多运气。如何保持之前选择的选项,在选择其他选项之前,该选项是永久性的?修改控制器$onInit()
函数中的状态会不会更好?
答案 0 :(得分:0)
尝试使用此方法来解决此问题。
.state('parentState', {
url: `:id/state-name`,
abstract: true,
template: '<ui-view/>',
data: {
layout: {
footer: false
}
},
resolve: {
context: resolveContext
},
}).state('childState', {
url: `:id/state-name/xyxyxy`,
abstract: true,
template: '<ui-view/>',
data: {
layout: {
footer: false
}
},
resolve: {
context: resolveContext
},
});
所以,第一个选项将采用&#39; id&#39;参数动态。
您可以通过将id参数传递给ui-sref中的州名来调用它。让我们说
<a ui-sref="childState({'id':5678})">
<input type="radio" value="5678" />
</a>
您可以为其他人创建或使用ng-repeat调用它。
我希望它有所帮助。