如何让指令内部的controller生成的数据传到指令外部的控制器中
有很多种方法,看你的数据想要如何使用。
通过事件订阅和广播进行分发
//$rootScope
$rootScope.$on('data-pass',function(event, data){ $rootScope.$broadcast('data-receive', data) })
// 传递数据的controller
$scope.$emit('data-pass', data)
// 需要数据的controller
$scope.$on('data-receiver', function(event, data){
// use data to do something
})
通过$scope的继承特性改写根作用域上的对象属性值
// 根作用域
$rootScope.data = {}
// 传递数据的controller
$scope.data.record = {}
// 需要数据的controller
// use $scope.data.record to do something
通过angular公用模块用于数据存储,注入到需要使用的controller里
angular.factory('publicData',function(){
return {}
});
// 传递数据的controller
angular.controller('passController',function($scope, publicData){
publicData.record = {}
})
// 需要数据的controller
angular.controller('needController',function($scope, publicData){
// use publicData.record to do something
})
先说三种方法:
楼上回答的用广播通信,
$emit
向上,$broadcast
向下service
共享数据,就是把同一个service
注入到directive
和controller
中,然后操作这个service
的数据就好当然你的
directive
如果在controller
的里面,本身就可以访问到controller
的作用域(前提是没创建独立scope),直接在directive
的controller
中操作scope
就可以了