javascript – 在angular-ui-router中将信息从子状态传递到父状态

我正在使用ui-router构建一个角度应用程序,其中我有父视图和子视图.
routerapp.config(function($stateProvider,$urlRouterProvider) {

    $urlRouterProvider.otherwise('/home');

    $stateProvider
        .state('home',{
            url: '/home',templateUrl: '/views/home/home.html',controller: 'HomeController'
        })
        .state('new-assignment',{
            url: '/new-assignment',templateUrl: 'new-assignment.html',controller: 'AssignmentController'
        })
            .state('new-assignment.new-client',{
                url: '/new-client',templateUrl: 'new-client.html',controller: 'ClientController'
            })
    ;

});

使用子视图(以及其他内容)来创建新客户端.
因此,通过在主视图中单击“创建新客户端”.状态将更改为“new-assignment.new-client”,并显示侧视图.

创建客户端时,我想转换回父视图“new-assignment”,并传递有关刚刚创建的客户端的信息.

父视图仍然可以拥有自己的数据(用于创建分配),并且自然不应该被触及.

我可以通过’$stateChangeSuccess’事件检测到更改:

routerapp.controller('AssignmentController',function($scope,Assignment,Client,$log) {
    $scope.clients = Client.clients;
    $scope.$on('$stateChangeSuccess',function (e,toState,toParams,fromState,fromParams){
        $log.log(fromState.name + ' -> ' + toState.name);
        $log.log('toParams ');
        $log.log(toParams);
        $log.log('fromParams ');
        $log.log(fromParams);
    });
});

我试图传递信息

$state.go('^',data);

但没有成功……

但我不明白如何将数据传递给父视图.有任何想法吗?

解决方法

子视图范围继承自父视图的范围.所以只需在AssignmentController中定义$scope.clients []数组.然后在ClientController中将新客户端添加到该数组.

Take a look at this Plunker以查看嵌套视图范围如何访问其父视图范围.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...