次のようなカスタム タグを作成しようとしています。
<mytag type="Big" />
type は、コンポーネントにバインドされる属性です。以下に示すように、ラベルにテキストを設定するようにします。
<label>{{type}}</label>
... (その他のコンポーネント)...
ドキュメントにあるように、デフォルトのタイプを設定するコントローラーがあります。
$scope.type = "Small";
そのため、属性タイプなしでタグを使用しても設定されます。
ディレクティブを使用してバインドしようとしています:
angular.module('TestPage',[])
.directive('mytag',function() {
return {
restrict: 'E',
templateUrl: 'component.html',
scope: {
type: '='
}
}
});
コンポーネント テンプレート (ng-app="TestPage") に適切な ng-app 設定があることに注意してください。
私の問題は、型へのバインディングが実際には何もバインドしていないように見えることです。
ディレクティブを使用して変数をコンポーネントにバインドする方法に関するドキュメントを読みました。ドキュメントによると、スコープ内でそのようなバインディングを行うことができます。スコープには、「分離スコープ」(???) と呼ばれるものを作成する「オブジェクト ハッシュ」(それが何であれ!) を含めることができるようです。このようなスコープは、次の方法で「ローカル プロパティ」を表すことができます。
@ または @attr - ローカル スコープ プロパティを DOM 属性にバインドします。DOM 属性は文字列であるため、結果は常に文字列になります。属性名が指定されていない場合、ローカル名と属性名は同じです。指定されたスコープのウィジェット定義: { localName:'@myAttr' } の場合、ウィジェット スコープ プロパティ localName は、hello {{name}} の補間値を反映します。name 属性が変更されると、ウィジェット スコープの localName プロパティも変更されます。名前は、(コンポーネント スコープではなく) 親スコープから読み取られます。
は???バインディングの適切な構文とこれは何の関係があるのでしょうか?
= または =expression - ローカル スコープ プロパティと親スコープ プロパティの間の双方向バインディングを設定します。属性名が指定されていない場合、ローカル名と属性名は同じです。スコープのウィジェット定義: { localModel:'=myAttr' } を指定すると、ウィジェット スコープ プロパティ localName は、親スコープの parentModel の値を反映します。parentModel への変更は localModel に反映され、localModel の変更は parentModel に反映されます。
すみません?ここで何が言われていますか?
& または &attr - 親スコープのコンテキストで式を実行する方法を提供します。属性名が指定されていない場合、ローカル名と属性名は同じです。指定されたスコープのウィジェット定義: { localFn:'increment()' } の場合、分離スコープ プロパティ localFn は、increment() 式の関数ラッパーを指します。式を介してisolateスコープから親スコープにデータを渡すことが望ましい場合がよくあります。これは、ローカル変数名と値のマップを式ラッパーfnに渡すことで実現できます。たとえば、式が increment(amount) の場合、localFn を localFn({amount: 22}) として呼び出して金額の値を指定できます。
今、私は完全に混乱しています!ウィジェットタグと、バインドを行うために私が書かなければならない何らかの関連関数がありますか??? 私が欲しいのは、値をラベルタグにバインドすることだけです!
上記のテキストをドキュメント ( http://docs.angularjs.org/guide/directive ) からコピーして強調しておきます。この doco は古い UNIX ドキュメントのように読めます。システムを既に知っている人にとっては非常に便利ですが、本当の専門知識を身につけようとしている初心者にはあまり役に立ちません。AngularJS で簡単なタスクを実行する方法を示すすべてのチュートリアルがあるのに (おもちゃのアプリには最適ですが、私が構築したい種類のクライアント側アプリケーションにはあまり適していません)、なぜより高度なものがないのでしょうか?
さて、私がもっと建設的になる時間です。
このドキュメントで説明するのが非常に難しいさまざまなバインディングを実行する方法について、誰かが素敵で簡単な例を提供してくれませんか? これらのスコープ ステートメントの適切な構文を示す例と、カスタム タグに追加されている属性に戻る方法の正確な説明 (平易な英語で) ???
何卒ご理解とご協力を賜りますようお願い申し上げます。