Maison > Questions et réponses > le corps du texte
如何让指令内部的controller生成的数据传到指令外部的控制器中
漂亮男人2017-05-15 17:00:21
Parlons d’abord de trois méthodes :
La réponse à l'étage utilise la communication diffusée, $emit
vers le haut, $broadcast
vers le bas
service
partager des données consiste à injecter les mêmes service
dans directive
et controller
, puis à exploiter les données de ce service
Bien entendu, si votre directive
est à l'intérieur de controller
, vous pouvez accéder au scope de controller
(à condition qu'aucun scope indépendant ne soit créé), directement dans le directive
de controller
. opérer scope
et le tour est joué
漂亮男人2017-05-15 17:00:21
Interne $scope.$emit("emit",data)
Externe $scope.$on("emit",function(ev,data){console.log(data)})
世界只因有你2017-05-15 17:00:21
Utilisez une portée indépendante, une liaison bidirectionnelle "=" et transmettez les données que vous souhaitez lier via les paramètres de la directive.
仅有的幸福2017-05-15 17:00:21
Il existe de nombreuses façons, selon la manière dont vous souhaitez utiliser vos données.
Distribution via abonnements et diffusions événementielles
//$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
})
Réécrivez la valeur de la propriété de l'objet sur la portée racine via la fonction d'héritage de $scope
// 根作用域
$rootScope.data = {}
// 传递数据的controller
$scope.data.record = {}
// 需要数据的controller
// use $scope.data.record to do something
Utilisez le module public angulaire pour le stockage des données et injectez-le dans le contrôleur que vous devez utiliser
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
})