2016-12-30 2 views
0

方法HTMLで1次の2つのAngularJS構文の違いは何ですか?

<my-directive> 
</my-directive> 

スクリプトで:HTMLで

function myDirective() { 
    var ddo = { 
     [LOTS OF OTHER VERY IMPORTANT DIRECTIVE PROPERTIES HERE] 
     controller: myController 
     bindToController: true 
    }; 
    return ddo; 
} 

方法2

スクリプトで

function myDirective() { 
    var ddo = { 
     [LOTS OF VERY IMPORTANT DIRECTIVE PROPERTIES HERE] 
    }; 
    return ddo; 
} 

私はコントローラを置くいくつかの他のプロパティ(テンプレートなど)が、私はちょうど変更していますとの指示があります両方のケースが。 2つの方法は類似していますか?

+0

2つの答えと私の返信が突然削除された...まあおかげでとにかく – user7339019

+0

あなたが何を意味するのですか? –

+0

私の記事に対する2つの答えは、どちらも同じ趣旨で、次のように言っています。 – user7339019

答えて

1

いいえ、最初の方法が好ましいです。

角度は角度がスコープの処理方法に違いがあります。

第2の方法では、ディレクティブ(コード分離)を作成する時点とは異なる外部スコープ(ng-controller="myController"によって作成)に依存します。

あなたは(あなたがディレクティブDDOにscopeプロパティを設定しないデフォルトでは、 - Ref: What is default Angular directive scope)を親スコープを使用するときに、第2の方法は、同じように動作します

あなたはディレクティブでスコープを単離した場合は、2番目の方法では動作しません。あなたはmyControllerから可能なアクセスプロパティではありませんとして

scope: { 
    param1: "=" 
} 

:、次のように作成しました。


編集

ルールは、すべてのケースを理解し、それは非常に簡単持っているとベストプラクティスを、次のように.component()を使用することを検討するために複雑になるかもしれないディレクティブ - Introduction to Angular's componentsを。


さらに読書:

+0

ありがとう、ちょうど私が必要なもの! – user7339019

+0

もう1つのフォローアップは、* no *スコープ属性を持つディレクティブを作成することと、scope属性を空のオブジェクトに設定してディレクティブを作成することの間に違いがあることを意味しますか? – user7339019

+0

@ user7339019 - はい、 'scope'パラメータはtrue/falseまたはobjectという2つの値をとりました。オブジェクトがある場合(空であっても)、スコープは分離されており、親スコープからプロパティにアクセスすることはできません。 'scope'がfalseに設定されているか、DDOでスキップされただけの場合、ディレクティブは新しいスコープを作成しません。 –

関連する問題