angular.js - angular指令 作用域问题

浏览:61日期:2023-01-21

问题描述

如何让指令内部的controller生成的数据传到指令外部的控制器中

问题解答

回答1:

先说三种方法:

楼上回答的用广播通信,$emit向上,$broadcast向下

service共享数据,就是把同一个service注入到directive和controller中,然后操作这个service的数据就好

当然你的directive如果在controller的里面,本身就可以访问到controller的作用域(前提是没创建独立scope),直接在directive的controller中操作scope就可以了

回答2:

内部$scope.$emit('emit',data) 外部$scope.$on('emit',function(ev,data){console.log(data)})

回答3:

使用独立作用域,'='双向绑定,将想要绑定的数据通过指令中的参数传递进来。

回答4:

有很多种方法,看你的数据想要如何使用。

通过事件订阅和广播进行分发

//$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 {}});// 传递数据的controllerangular.controller(’passController’,function($scope, publicData){ publicData.record = {}})// 需要数据的controllerangular.controller(’needController’,function($scope, publicData){ // use publicData.record to do something})

相关文章: