27

<div>以下に示すように、ディレクティブを使用していくつかのタグを作成して追加しようとしています。

module.directive('createControl', function(){
  return function(scope, element, attrs){    
    console.log(attrs.createControl); // undefined     
  }                                          
});                                         


<div class="control-group" ng-repeat="(k, v) in selectedControls">
  <div create-control="{{ v.type }}"></div>
</div>

attrs には、次の構造があります。

$$element: b.fn.b.init[1]
$$observers: Object
$attr: Object
createControl: "date"
style: "margin-right: 15px"
__proto__: Object

しかし、使用しようとするattrs.createControlundefined、理由がわかりません。実際の質問: スコープ変数をディレクティブに渡す方法は?

4

3 に答える 3

15

ディレクティブ docsのAttributes/observing interpolated attributesセクションを読んでください。リンク段階では、属性は設定されていません。

attrs.$observeまたはを使用するなど、いくつかの方法があります$timeout

app.directive('createControl', function($timeout){
 return function(scope, element, attrs){
      attrs.$observe('createControl',function(){
        console.log(' type:',attrs.createControl);
         element.text('Directive text, type is: '+attrs.createControl);
      });
  }
}) ;

DEMO

于 2013-04-26T10:04:38.910 に答える