Maison  >  Questions et réponses  >  le corps du texte

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

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

我想大声告诉你我想大声告诉你2738 Il y a quelques jours570

répondre à tous(4)je répondrai

  • 漂亮男人

    漂亮男人2017-05-15 17:00:21

    Parlons d’abord de trois méthodes :

    1. La réponse à l'étage utilise la communication diffusée, $emitvers le haut, $broadcastvers le bas

    2. service partager des données consiste à injecter les mêmes service dans directive et controller, puis à exploiter les données de ce service

    3. 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é

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-15 17:00:21

    Interne $scope.$emit("emit",data)
    Externe $scope.$on("emit",function(ev,data){console.log(data)})

    répondre
    0
  • 世界只因有你

    世界只因有你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.

    répondre
    0
  • 仅有的幸福

    仅有的幸福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
    })

    répondre
    0
  • Annulerrépondre