2016-03-20 9 views
0

Ich erstelle Angularjs Directive. Allerdings muss ich einen Parameter an die Direktive übergeben und ihn in seinem Controller verwenden, um seine Elemente mit dem $ http-Service zu füllen.Angularjs übergibt Variable an einen Controller der Richtlinie

Ich übergebe einen "listId" Parameter an die Direktive, der Controller in der Direktive erwartet, dass dieser Parameter Elemente dieser Liste vom Server abruft. Der Code im Controller, der in die Direktive eingebettet ist, ist kommentiert.

<script type="text/javascript"> 
 
     var app = angular.module('app', []); 
 
     app.controller('metadataCtrl', function ($scope, $http) { 
 

 
     }); 
 

 
     app.directive('mydirective', function ($http) { 
 
      return { 
 
       restrict: 'AE', 
 
       template: '<div ng-repeat="model in items">{{ model.name}} </div>', 
 
       replace: true, 
 
       scope: { 
 
        listId: '=' 
 
       }, 
 
       controller: function ($scope) { 
 

 
        //console.log(scope.listId); 
 
        // console.log(listId); 
 
        //$http({ method: 'GET', url: 'http://localhost:62624/home/listvalues?listid=' }).then(function (response) { 
 
        // $scope.items = response.data; 
 

 
        //}, function (result) { alert("Error: No data returned"); }); 
 

 
       }, 
 
       link: function (scope, element, attrs) { 
 
        console.log(scope.listId); 
 
       } 
 
      }; 
 
     }); 
 

 

 
    </script>

Der HTML-Code

<body ng-app="app"> 
 

 

 
    <form name="myForm" ng-controller="metadataCtrl" class="my-form"> 
 

 
     <mydirective list-id="99"></mydirective> 
 

 
    </form> 
 
</body>

Die ListID kann im Link () Funktion in dem DIR zugegriffen werden ective (ich verwende console.log(), um das zu testen). Dies funktioniert jedoch nicht in der Controller-Funktion.

Antwort

1

In die Steuerung wird $scope injiziert.

 controller: function ($scope) { 
      //USE $scope 
      console.log($scope.listId); 
      // 
      //console.log(scope.listId); 
+0

obwohl ich dies versucht habe und es nicht funktioniert hat. Es funktioniert jetzt. Danke trotzdem. – Coding

+0

@ h.salman sollten Sie Ihre eigene Antwort posten und als Antwort akzeptieren – kazupooot

Verwandte Themen