2017-04-10 14 views
2

こんにちは、同じ要素を要求しています。角度の文書によると、これは可能です。同じディレクティブに同じディレクティブが必要です

A^prefix would make the directive look for the controller on its own element or its parents; without any prefix, the directive would look on its own element only.

説明に続きます。 myDとmyCの2つのディレクティブがあります... myCのlink ctrl属性からmyDにアクセスできるようにしたいと考えています。

私のコードサンプルのリンクが含まれています。次のエラーの取得

var app = angular.module("app",[]); 


app.directive("myD", function() { 
    return { 
     restrict : "E", 
     template : "<b>myd</d>" 
    } 
}); 

app.directive("myC", function() { 
    return { 
     require : "myD", 
     restrict : "A", 
     link : function (scope, attr, ele, ctrl) { 
     alert(JSON.stringify(ctrl)); 
     } 
    } 

}); 

<div ng-app="app"> 
    <my-d my-c></my-d> 
</div> 

http://codepen.io/mantisimo/pen/KWOxeg

:あなたはrequireを使用する場合

Error: [$compile:ctreq] Controller 'myD', required by directive 'myC', can't be found!

+1

put controller:function(){}内部ディレクティブ 'myD'? – ABOS

+0

それをありがとう....文字通りちょうどそれを考え出した! :-) – Mantisimo

答えて

2

を、あなたは必要な要素のコントローラを注入する角度お願いします。あなたの場合、コントローラは未定義です。

エラーはコントローラを宣言する必要があるmyDにありました。

app.directive("myD", function() { 
    return { 
     restrict : "E", 
     template : "<b>myd</d>", 
     controller: function(){} 
    } 
}); 
+1

ちょうど2秒前に分かった...面白いことに、あなたが問題を見ているときにどうやって定義すればいいのか...速い応答に感謝します。 //docs.angularjs:あなたがコンポーネントの代わりのコントローラを使用する場合 – Mantisimo

+0

うまくいけばは@Mantisimo – Mantisimo

+1

@Mantisimo次の時間を節約するプラスチック製のアヒルを使用し、各HTTPSで宣言されたデフォルトのコントローラがあります。 org/guide/component#ディレクティブ定義とコンポーネント定義の比較 –

関連する問題