を示しています角度指令コードは、スコープを変更しますが、テンプレートは、私は次のようなディレクティブを持って同じ値
.directive('myDirective', function() {
return {
restrict: 'AE',
replace: true,
templateUrl: '/myDirective.html?v=' + window.buildNumber,
link: function (scope, element, attrs) {
scope.itemClasses = attrs.itemClasses || '';
}
}
})
をし、それはテンプレートのは、次のようになります。
<div class="my-directive">
<div class="items" ng-repeat="item in items">
<div class="item {{ itemClasses }}">{{ item.title }}</div>
</div>
</div>
とそのディレクティブが異なる中で呼び出されました
<my-directive item-classes="col-md-6"></my-directive>
...
<my-directive item-classes="col-md-12"></my-directive>
すべてのテンプレートは同じ値の012をレンダリングします(テンプレートごとに1つの呼び出し)。。同時にリンク機能が適切な値を設定します(私はconsole.log()
の呼び出しでこの事実を確認しました)。
scope: true
属性をディレクティブのコードに追加すると、すべて正常に動作します。だから、それは自分の継承されたスコープを持つように思えます。あなたは私にこのような行動を説明できますか?
ありがとうございます。
ありがとうございます!私はそれが正しいことを確かめるために要約してください。 'link'関数はすべてのテンプレートレンダリングの前に呼び出されます。だから、私のコードはスコープ内の同じ属性をオーバーライドするだけです。テンプレートをレンダリングするときには、最後に割り当てられた値があります。右? – dizpers
スコープ:真のアプローチは正しいですか?それとももっと良いことがありますか? – dizpers
短く:スコープがfalseの場合、親のスコープを使用します。したがって、常に親のスコープ内に同じ変数を設定しています。したがって、常に同じ変数を上書きします。適切なアプローチのためには、この値で何をしようとしているかによって異なります。 itemClassesで何をするつもりですか?コントローラの変数が変わったときに変更する必要がありますか? – quirimmo