2016-05-01 11 views
0

私のディレクティブにはコントローラーがあり、渡されたディレクティブの値を渡す方法を考えています。下の例では、 'name'はコンソールにポストされていませんが、レンダリング時にhtmlに表示されます。明らかに私の例は単純化されていますが、その点が分かります。角度の指示子コントローラに値を渡す方法は?

angular.module('myApp') 
 
    .directive('helpLabel', function() { 
 
     return { 
 
      restrict: 'E', 
 
      scope: { 
 
       name: '@', 
 
      }, 
 
      template: '<span>{{name}}</span>', 
 
      controller: function ($scope) {     
 
       console.log(name); 
 
      } 
 
     }; 
 
    });
<helpLabel name="test"></helpLabel>

答えて

0

それはHTMLにレンダリングされているとき、あなたは{{}}内の名前をカプセル化するためです。あなたのディレクティブ内でnameプロパティにアクセスすることができない場合は、コードを変更する必要があります。あなたのコード、console.log(name);

angular.module('myApp') 
.directive('helpLabel', function() { 
    return { 
     restrict: 'E', 
     scope: { 
      name: '@', 
     }, 
     template: '<span>{{name}}</span>', 
     controller: function ($scope) {     
      console.log($scope.name); 
     } 
    }; 
}); 
0

、変数nameはない、それをアクセスすることはできませんので、あなたのディレクティブと知られているが、角度いるので、それは{{name}}をレンダリングすることができ'name'変数への結合を行っています。

変数nameには、変数nameが現在のスコープ内に存在するため、$scope.nameとしてアクセスする必要があります。

angular.module('myApp') 
    .directive('helpLabel', function() { 
     return { 
      restrict: 'E', 
      scope: { 
       name: '@', 
      }, 
      template: '<span>{{name}}</span>', 
      controller: function ($scope) {     
       console.log($scope.name); 
      } 
     }; 
    }); 

は、以下のようにコードを変更します

関連する問題