ディレクティブを作成するプロセスを実行していました。いくつかの浮き沈みを経て、ディレクティブ(ウィジェット)を作成し、ディレクティブが取るさまざまな属性を完成させました。
属性、バインド、評価、式など、利用可能なさまざまなオプションを使用しました。
私が考えたのは、ジェネリックコンポーネントを作成したい場合、人々がコンポーネントに値を渡す方法がわからないということでした。
これがイラストです...
新しい要素コンポーネントを作成しています。
<hello name="__ARGUMENT__"></hello>
helloのname属性は、その中の唯一の変数です。あなたがそれを一般に公開する場合...これらは人々がこのコンポーネントを使用する可能性のあるシナリオです。
ケース1:
<hello name="angular"></hello>
ケース2:
<hello name="{{name}}"></hello>
ケース3:
<div ng-repeat="name in names">
<hello name="name"></hello>
</div>
今..さまざまなシナリオで..提供されているさまざまなオプションを理解するようになりました。コンポーネントからテンプレートへの値の単純な直接置換であるため、「属性」が必要になる単一のシナリオを考えることはできません。
ディレクティブ定義で、名前を「属性」ではなく「評価」として定義した場合
属性の場合:
<hello name="angular"></hello>
評価する場合:
<hello name="'angular'"></hello>
余分な一重引用符に注意してください。
私が知る限り、evaluateは属性が何をするのかをカバーしています。そして、evaluateを使用することは、より多くのシナリオをカバーするので、属性だけよりも良い選択のようです。
そもそも属性が存在する理由を誰かが説明できるとしたら?より多くの選択肢=より多くの混乱..:)