我在此辩论了一段时间,但我得到了a Plunk来重现它。
我的状态为“联系”,默认情况下加载。与$state.transitionTo
在这种状态下,我有一些观点,它们都被加载,一切正常。
如果我单击默认情况下将状态更改为“Home”或“ui-sref”,并且在“Home”状态/模板中我有ui-sref="contacts
“。当我们单击返回以将状态设置为联系人它应该工作,但现在没有正确调用所有子视图。
似乎当ui-sref调用状态时,这个状态与默认情况下加载时的行为不同。
为什么$ state.transitionTo('');似乎与ui-sref的工作方式不同。
<script>
var myapp = angular.module('myapp', ["ui.router"])
myapp.config(function($stateProvider, $urlRouterProvider){
// For any unmatched url, send to /
$urlRouterProvider.otherwise("/")
$stateProvider
.state('home', {
templateUrl: 'home.html',
controller: function($scope){
}
})
.state('contacts', {
templateUrl: 'contacts.html',
controller: function($scope){
}
})
.state('contacts.list', {
views:{
"":{
template: '<h1>Contact.List Working wi no Data defined.</h1>'
},
"stateSubView":{
template: '<h2>StateSubView Working</h2>'
},
"absolute@":{
template: '<h2>Absolute item</h2>'
}
}
});
});
myapp.controller('MainCtrl', function ($state) {
$state.transitionTo('contacts.list');
})
Q2: 当我在索引中添加视图时,为什么接触的Absolute标记工作,但当它在contact.html文件中时不起作用。绝对引用只适用于索引而不是在任何地方调用?
"absolute@":{
template: '<h2>Absolute item</h2>'
}
答案 0 :(得分:0)
我在index.html
中看到您有一个空的ui-view
标记。你期望去那里?我想你不能这样做。路由器只是不知道它应该替换哪个州(家庭或联系人)。显然它选择了第二个(联系人)。我建议将url: '/'
置于家庭状态,你会看到差异。
这肯定是一个问题。
除此之外: 您不能简单地从联系人afaik中的contacts.list访问视图。
答案 1 :(得分:0)
空ui-view
work as a wild card,即使我们有嵌套元素,也可用于切换多条路线。但是,如果我们有一个嵌套视图contact.list,那么只有将整个路径放在ui-sref="contacts.list"
中才能访问它,因为list
的{{1}}子项只能通过{{1}访问}}