2016-09-08 3 views
0

angularJSディレクティブについて説明しているamazing videoが見つかりました。しかし、私には質問があると聞いたことが一つあります。angularJSディレクティブ名は一意であるかどうか?

"angleディレクティブの名前はユニークではないので、名前ごとにいくつかのディレクティブファクトリが存在する可能性があるという事実をサポートする必要があります。"

^これについてはわかりません。プレゼンターは、同じディレクティブ名を2回(工場機能を変えて)再宣言できると言っていますか?以下のコードのようなもの。

app.directive('myDirective', function() { 
    return { 
    template: '<h1>hello</h1>' 
    } 
}); 

app.directive('myDirective', function() { 
    return { 
    template: '<h1>hi</h1>' 
    } 
}); 

しかし、このようなコードは誰かが明確にできれば...それは素晴らしいことだエラーを投げているようだ。)angularJSは、各ディレクティブの複数の工場の機能を保存してい?,そしてb。)これが可能な場合いつ、どのようにしてこのようなことをしますか?

+0

それは何を投げるのですか?私はそれをやったことはありませんが、最後に宣言されたサービス、指示などは、同じ名前で宣言されたものを上書きします。たとえば、同じサービスを持つ2つのモジュールをインポートする場合。 – ste2425

答えて

0

angular tipsによれば、同じ名前のディレクティブを2つ持つことができ、それらは一緒に動作します。 コメントには、スコープが分離されているか、コントローラーが必要なことが記載されています。

2つのディレクティブを同じ名前と異なるテンプレートで使用しようとしましたが、最初のテンプレートが使用されましたが、エラーはありません(jsfiddle)。

<div ng-app="ui.directives"> 
    <my-d></my-d> 
</div> 


var dirs = angular.module('ui.directives', []); 
dirs.directive('myD', 
    function() { 
    return { 
     restrict: 'E', 
     template: 'hey' 
    }; 
    } 
); 
dirs.directive('myD', 
    function() { 
    return { 
     restrict: 'E', 
     template: 'hello', 
    }; 
    } 
); 

あなたのエラーは何ですか?

+0

このエラーは、角度1.0.0.jsを見ました:5525エラー:複数のディレクティブ[myD、myD]がテンプレートを要求しています:しかし、とにかくコードは動作すると思います。ありがとう... –

関連する問題