如何讓指令內部的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)})
使用獨立作用域,"="雙向綁定,將想要綁定的資料透過指令中的參數傳遞進來。
有很多種方法,看你的資料想要如何使用。