2015-12-16 14 views
7

Sono un po 'nuovo per Angularjs. Quello che voglio è l'accesso alla variabile "$ scope.myVar" all'interno del controller "myController". Sarebbe di grande aiuto se riuscissi a fornire una soluzione.Variabile direttiva Access AngularJs all'interno del controller

angular.module('myDirective', []) 
 
     .controller('myController', ['$scope', function ($scope) { 
 
       
 
      }]) 
 
     .directive('myDirective', function() {   
 
      return { 
 
       scope: { 
 
        myVar: '='     
 
       }, 
 
       controller: function ($scope) { 
 
        $scope.myVar = 'xyz'; 
 
        alert($scope.myVar); 
 
       } 
 
      }; 
 
     });
<html lang="en-US"> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
    <script type="text/javascript" src="newjavascript.js"></script> 
 
    <body ng-app="myDirective"> 
 
     <div ng-controller="myController"> 
 
      <my-directive></my-directive>> 
 
     </div> 
 
    </body> 
 
</html>

risposta

12

basta creare una variabile myVar nel controllore e passarlo alla direttiva mediante l'attributo my-var.

Nella tua myController, Definire myVar come

$scope.myVar= "Hello" 

io il tuo DOM, passarlo alla direttiva come

<my-directive my-var="myVar"></my-directive> 

Dal momento che si sta utilizzando legame a doppio senso, le modifiche apportate al myVar dal direttiva sono disponibili nel controller.

È possibile inserire un watch su myVar per tenere traccia delle modifiche.

+1

Grazie VVK sacco funziona – vimuth

+0

Grazie mille, mi è stato graffiare la mia testa per anni e questo era l'anello mancante (avete bisogno di dati legano tra la direttiva e di controllo genitori tramite l'attributo) –

7
angular.module('myDirective', []) 
     .controller('myController', ['$scope', function ($scope) { 
       $scope.show = function() { 
        alert($scope.myVar); 
       }; 
      }]) 
     .directive('myDirective', function() {   
      return { 
       scope: { 
        myVar: '='     
       }, 
       controller: function ($scope) { 
        $scope.myVar = 'xyz'; 
        alert($scope.myVar); 
        $scope.$parent.myVar = $scope.myVar; // here you can access the controller scope by using $parent 
       } 
      }; 
     }); 
+2

Grazie mille " vijay shegokar ". – vimuth

+1

Hai salvato la mia giornata. Grazie –

+1

Questo ha funzionato anche per me. – costa

Problemi correlati