angularjs ui路由器:如何从状态转换;“家长”;至;父母。第一个孩子;?
母国:angularjs ui路由器:如何从状态转换;“家长”;至;父母。第一个孩子;?,angularjs,angular-ui-router,angular-routing,Angularjs,Angular Ui Router,Angular Routing,母国: var roundsState = { name : 'rounds', url: '/rounds', component: 'rounds', resolve : { rounds : function(RoundsService){ return RoundsService.getRounds(); } } }; 儿童国家: var roundState = { name : 'rounds.round', url: '
var roundsState = {
name : 'rounds',
url: '/rounds',
component: 'rounds',
resolve : {
rounds : function(RoundsService){
return RoundsService.getRounds();
}
}
};
儿童国家:
var roundState = {
name : 'rounds.round',
url: '/{roundUri}',
component: 'round',
resolve: {
round: function(RoundsService, $transition$, $stateParams) {
return RoundsService.getRound($transition$.params().roundUri);
}
}
};
正在尝试使用:
app.run(function($transitions) {
$transitions.onSuccess({ to: 'rounds' }, function(trans) {
return trans.router.stateService.go('rounds.round');
});
});
当转换到状态“rounds”成功时,我想选择状态“rounds.round”,但要选择第一个孩子。我在读关于孙子的书,但我不明白
请注意,我使用的是ui路由器1.x
以下是plnkr上的实施示例:
我将其与$state一起使用,这非常简单:
$state.go('rounds.round', {});
我不认为您真的应该使用$transition$,因为您并不需要这样做。我将此与$state一起使用,这非常简单:
$state.go('rounds.round', {});
我不认为您真的应该使用$transition$,因为您并不需要这样做。您可以编写state.js,如:
angular.module('sampleApp')
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise(function ($injector) {
var $state = $injector.get('$state');
$state.go('home');
});
$stateProvider
.state('parent', {
abstract: true,
templateUrl: 'views/parent/index.html'
})
.state('child', {
parent: 'parent',
abstract: true,
url: '/child',
template: '<ui-view/>'
})
.state('child.add', {
url: '/add',
templateUrl: 'views/child/add.html'
});
}]);
angular.module('sampleApp')
.config(['$stateProvider','$urlRouterProvider',函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则(函数($injector){
var$state=$injector.get(“$state”);
$state.go('home');
});
$stateProvider
.州('父'{
摘要:没错,
templateUrl:'views/parent/index.html'
})
.州(“儿童”{
家长:'家长',
摘要:没错,
url:“/child”,
模板:“”
})
.state('child.add'{
url:“/add”,
templateUrl:'views/child/add.html'
});
}]);
然后在HTML中访问,如:
<a href="#" ui-sref="child.add"><span>Add Child</span></a>
您可以编写state.js,如:
angular.module('sampleApp')
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise(function ($injector) {
var $state = $injector.get('$state');
$state.go('home');
});
$stateProvider
.state('parent', {
abstract: true,
templateUrl: 'views/parent/index.html'
})
.state('child', {
parent: 'parent',
abstract: true,
url: '/child',
template: '<ui-view/>'
})
.state('child.add', {
url: '/add',
templateUrl: 'views/child/add.html'
});
}]);
angular.module('sampleApp')
.config(['$stateProvider','$urlRouterProvider',函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则(函数($injector){
var$state=$injector.get(“$state”);
$state.go('home');
});
$stateProvider
.州('父'{
摘要:没错,
templateUrl:'views/parent/index.html'
})
.州(“儿童”{
家长:'家长',
摘要:没错,
url:“/child”,
模板:“”
})
.state('child.add'{
url:“/add”,
templateUrl:'views/child/add.html'
});
}]);
然后在HTML中访问,如:
<a href="#" ui-sref="child.add"><span>Add Child</span></a>
您缺少round.round
状态的roundUri
参数。如果您看到控制台,您可能会知道这一点!:)
所以,我把它改成这样:
trans.router.stateService.go('rounds.round', {roundUri: "firstround"});
而且它有效
编辑:
如何动态切换到子状态?(在ui路由器
v1.0中)
好的,您可以在$transitions.onSuccess
中决定。您可以注入某些依赖项并决定去哪里。像这样:
app.run(function($transitions, RoundsService) {
$transitions.onSuccess({ to: 'rounds' }, function(trans) {
RoundsService.getRounds().then(function(rounds) {
return trans.router.stateService.go('rounds.round', {roundUri: rounds[0].uri});
})
});
});
注意我是如何使用服务调用RoundsService.getRounds()
确定要访问哪个子URI的
我已经修改了rounds.json
,这样其他一些状态(比如roundO16
)现在是第一个。而且,它会进入那个状态!:)
用于动态子状态访问。您缺少rounds.round
状态的roundUri
参数。如果您看到控制台,您可能会知道这一点!:)
所以,我把它改成这样:
trans.router.stateService.go('rounds.round', {roundUri: "firstround"});
而且它有效
编辑:
如何动态切换到子状态?(在ui路由器
v1.0中)
好的,您可以在$transitions.onSuccess
中决定。您可以注入某些依赖项并决定去哪里。像这样:
app.run(function($transitions, RoundsService) {
$transitions.onSuccess({ to: 'rounds' }, function(trans) {
RoundsService.getRounds().then(function(rounds) {
return trans.router.stateService.go('rounds.round', {roundUri: rounds[0].uri});
})
});
});
注意我是如何使用服务调用RoundsService.getRounds()
确定要访问哪个子URI的
我已经修改了rounds.json
,这样其他一些状态(比如roundO16
)现在是第一个。而且,它会进入那个状态!:)
用于动态子状态访问。在ui路由器1.x中,根据迁移页面,必须使用$transition$:。无论如何,$state.go('rounds.round',{});类似于trans.router.stateService.go('rounds.round',{});但我想要的是转换到轮中的第一个子级。根据迁移页面,roundIn ui router 1.x必须使用$transition$。无论如何,$state.go('rounds.round',{});类似于trans.router.stateService.go('rounds.round',{});但我想做的是在轮次中过渡到第一个孩子