2016-03-20 12 views
0

私はAngularjsディレクティブを作成しています。しかし、私は指令にパラメータを渡して、そのコントローラ内で$ httpサービスを使って項目を設定する必要があります。変数をディレクティブのコントローラに渡す

"listId"パラメータをディレクティブに渡すと、ディレクティブ内のコントローラは、このパラメータがサーバーからそのリストの項目を取得することを期待しています。 ディレクティブに埋め込まれたコントローラ内のコードにコメントが付けられています。

<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>

HTMLコード

<body ng-app="app"> 
 

 

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

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

 
    </form> 
 
</body>
listId DIRに リンク()機能にアクセスすることができます(私はそれをテストするためにconsole.log()を使っています)。ただし、これはコントローラ機能では機能しません。

答えて

1

コントローラでは、注入$scopeを使用します。

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

私はこれを試しても機能しませんでした。その今働いている。とにかくありがとう。 – Coding

+0

@ h.salmanあなた自身の回答を投稿して回答として受け入れる必要があります – kazupooot

関連する問題