我们的应用程序中有三个页面,可以在一个父页面下分类,如下所示。
1)Parent
I)Child1
II)Child2
III)ChildIII
.state('Parent', {
url: '/Parent/:ID',
templateUrl: 'parent.html',
controller:'parentcontroller'
})
.state('Parent.Child1', {
url: '/Child1',
templateUrl: 'Child1.html'
})
.state('Parent.Child2', {
url: '/Child2',
templateUrl: 'Child2.html'
})
.state('Parent.Child3', {
url: '/Child3',
templateUrl: 'Child3.html'
})
有时我们需要从child1到child3一个接一个地顺序调用这些子页面而没有参数,有时我们需要单独调用这些子页面,但是请求需要通过父控制器,这样我们就不必实例化新的控制器实例对于每个子页面。为了实现这一点,我正在使用href
,但我希望能够通过父母和孩子而不通过任何参数。
工作href ex: <a href='../Parent/{{ID}}/child1'
不工作: <a href='../Parent/child1'
任何人都可以指导我完成这个吗?谢谢!
溶液:
.state('Parent', {
url: '/Parent/:ID',
templateUrl: 'parent.html',
controller:'parentcontroller',
params:{ID:null}
})
.state('Parent.Child1', {
url: '/Child1',
templateUrl: 'Child1.html'
})
.state('Parent.Child2', {
url: '/Child2',
templateUrl: 'Child2.html'
})
.state('Parent.Child3', {
url: '/Child3',
templateUrl: 'Child3.html'
})
From HTML:<a ui-sref="(Parent.Child1{ID:{{value}}})">Home</a>
我不知道如果我们如上所述使用SREF
并且在父值处声明的控制器仍然可以读取params
但是给了一个镜头并且它有效!
答案 0 :(得分:0)
我对你要问的内容有点困惑,但听起来的方式是所有页面都使用相同的控制器。如果是这样,那就让他们吧。控制器最终将在不再需要时被销毁,因此实例化一个新控件很好。如果您要路由到新页面,它将查找随附的控制器。
如果目标只是获取一次数据,则可以将其存储在服务中。每个服务都是单例,因此如果您获取数据并将其保存在服务中,您可以将该服务注入其他地方并访问它。
答案 1 :(得分:0)
是的,你可以这样做。首先,你应该在你的 .state()中定义你的params,如果你将params传递给 child1 状态,那么它应该如下定义,
.state('Parent.Child1', {
url: '/Child1',
templateUrl: 'Child1.html',
params: {
paramName: '' //here paramName can be named by your wish.
}
})
之后你应该调用状态并在ui-sref中传递param,如下所示,
<a ui-sref="Parent.Child1({paramName: scopeName})">Click</a>
这里scopeName是具有param值的作用域的名称,如果你想要硬编码一个字符串,那么你可以传入qoutes,({paramName:&#39; some string&#39;})