この記事の例では、AngularJS ディレクティブのバインド戦略について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
前の記事では、命令がどのように独立したスコープを生成するかを説明しました。このセクションでは、スコープ内のバインディング戦略を詳しく見ていきます。
一般に、スコープバインディング戦略は 3 つのタイプに分けられます:
(1)@: バインディング文字列
(2)=: 親コントローラーとの双方向バインディング
(3)&: 使用される関数の呼び出し親スコープ
1. 基本メソッド
<test word="{{wordCtrl}}"></test>
app.controller('myController1',['$scope',function($scope){ $scope.wordCtrl="hello"; }]); app.directive('test',function(){ return{ restrict:'E', template:"<div>{{word}}</div>", link:function(scope,ele,attr){ scope.word=attr.word; } } });
表示効果:
これは、スコープ内の文字列のバインドを実現する最も基本的なメソッドです
2.上記のメソッドを書き換えると
app.directive('test',function(){ return{ restrict:'E', scope:{ word:'@' }, template:"<div>{{word}}</div>", } });
link 関数を削除して @binding を追加することで、命令内のプロパティを命令スコープの文字列に正常にバインドできます。
3. ‘=’ バインディング
= バインディングを使用すると、命令のスコープ内の値を変更するだけでなく、親コントローラー内の値も変更して双方向バインディングを実現できます。
例:
ctrl:<test word="{{wordCtrl}}"></test>
app.directive('test',function(){ return{ restrict:'E', scope:{ word:'@' }, template:"directive:<input ng-model='word' />", } });
その結果、命令内のスコープの値を変更すると、コントローラー内の対応する変数の値も変更され、双方向接続が実現されます。命令内のコントローラーとスコープの間。
効果は以下の通りです:
3. ‘&’メソッド
<test greet="sayHello()"></test>
app.directive('test',function(){ return{ restrict:'E', scope:{ greet:'&' }, template:"<div ng-click='sayHello({name:'yuxiaoliang'})'>点击说HELLO</div>", } });
パラメータの受け渡し方法に注意してください。
この記事が AngularJS プログラミングに携わるすべての人に役立つことを願っています。
AngularJS 命令のバインディング戦略例の分析に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。