HTMLコード:
<div ng-controller="MyController">
<div>{{ hello }}</div>
<div my-terminal>{{hello}}</div>
</div>
JSコード:
const app = angular.module('app', [])
app.controller('MyController', function ($scope) {
$scope.hello = 'Hello, AngularJS'
})
app.directive('myTerminal', function () {
return {
restrict: 'A',
terminal: true,
link: function () {
console.log('--- myTerminal')
}
}
})
気付いてくださいterminal
ですtrue
。
結果:
anglejsドキュメントから、isの場合、優先度の低い同じ要素に適用された他のディレクティブterminal
はtrue
実行されないことがわかりましたが、<div my-terminal>{{hello}}</div>
式がレンダリングされない理由を説明できません{{hello}}
この質問の小さな完全なデモ:https://github.com/freewind-demos/angularjs1-directive-terminal-issue-demo
ドキュメントから:
ターミナル
true
thenに設定すると、currentpriority
が実行される最後のディレクティブのセットになります(現在のディレクティブは、priority
実行順序priority
が定義されていないため、引き続き実行されます)。ディレクティブのテンプレートで使用されている式やその他のディレクティブも実行から除外されることに注意してください。
それが何を意味するかについてのより良い説明ng-non-bindable
は、terminal
プロパティを使用するドキュメントから得られます。
ngNonBindable
ngNonBindable
ディレクティブは、より低い優先順位を持っている要素自体のディレクティブを含む現在のDOM要素の内容を、コンパイルまたはバインドしないAngularJSを伝えますngNonBindable
。これは、要素にAngularJSディレクティブとバインディングのように見えるものが含まれているが、AngularJSでは無視する必要がある場合に役立ちます。これは、たとえば、コードのスニペットを表示するサイトがある場合に当てはまります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加