Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs ui路由器:如何从状态转换;“家长”;至;父母。第一个孩子;?_Angularjs_Angular Ui Router_Angular Routing - Fatal编程技术网

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',{});但我想做的是在轮次中过渡到第一个孩子