mra*_*xus 7 javascript angularjs angular-ui-router
我正在使用ui-router构建一个angular-app,我有一个父视图和一个子视图.
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'
})
;
});
Run Code Online (Sandbox Code Playgroud)
使用子视图(以及其他内容)来创建新客户端.因此,通过在主视图中单击"创建新客户端".状态将更改为"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);
});
});
Run Code Online (Sandbox Code Playgroud)
我试图传递信息
$state.go('^', data);
Run Code Online (Sandbox Code Playgroud)
但没有成功......
但我不明白如何将数据传递给父视图.有任何想法吗?
子视图范围继承自父视图的范围.所以只需在中定义$scope.clients[]
数组AssignmentController
.然后将新客户端添加到该数组中ClientController
.
查看此Plunker,了解嵌套视图范围如何访问其父视图范围.