84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
如何让指令内部的controller生成的数据传到指令外部的控制器中
先说三种方法:
楼上回答的用广播通信,$emit向上,$broadcast向下
$emit
$broadcast
service共享数据,就是把同一个service注入到directive和controller中,然后操作这个service的数据就好
service
directive
controller
当然你的directive如果在controller的里面,本身就可以访问到controller的作用域(前提是没创建独立scope),直接在directive的controller中操作scope就可以了
scope
内部$scope.$emit("emit",data) 外部$scope.$on("emit",function(ev,data){console.log(data)})
使用独立作用域,"="双向绑定,将想要绑定的数据通过指令中的参数传递进来。
有很多种方法,看你的数据想要如何使用。
通过事件订阅和广播进行分发
//$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
就可以了内部$scope.$emit("emit",data)
外部$scope.$on("emit",function(ev,data){console.log(data)})
使用独立作用域,"="双向绑定,将想要绑定的数据通过指令中的参数传递进来。
有很多种方法,看你的数据想要如何使用。