私は Angular で実験を始めたばかりで、ng-repeat を使用してバインディングにアプローチする最善の方法について混乱しています。私は基本的に、子スコープを作成する ng-repeat についての要点を理解しています。私の問題はもっと基本的なものです:)このようなhtmlの場合:
<div ng-controller="swatchCtrl" class="swatch-panel">
Swatches
<ul>
<li ng-repeat="swatch in swatchArray" class="swatch">
<input
type="radio"
name="swatches"
ng-model="$parent.currentSwatch"
value="{{swatch}}"
>
<label class="swatch-label">
<div class="swatch-color" style="background-color: #{{swatch.hexvalue}};"></div
><span class="swatch-name">{{swatch.colorName}}</span>
</label>
</li>
</ul>
currentSwatch is:
<pre>{{currentSwatch | json}}</pre>
currentSwatchObj is:
<pre>{{currentSwatchObj | json}}</pre>
how do I tell this to fire??
swatchArray is:
<pre>{{swatchArray | json}}</pre>
</div>
そして次のようなJavaScript:
function swatchCtrl($scope) {
$scope.swatchArray = [
{colorName:'Red', hexvalue: 'ff0000', selected: 'false'},
{colorName:'Green', hexvalue: '00ff00', selected: 'false'},
{colorName:'Blue', hexvalue: '0000ff', selected: 'false'}
];
$scope.currentSwatch = {};
}
したい:
a) ユーザーがラジオ ボタンをクリックしたときに、currentSwatch オブジェクトの colorName プロパティと hexvalue プロパティの両方を設定する必要があります。現在、バインディングは配列から文字列化されたオブジェクトを私に与えているようです。currentSwatch の戻りを監視して、それを解析して使用可能なオブジェクトに戻すにはどうすればよいですか? シンプルですが、何が欠けているのでしょうか?
b)ユーザーがラジオボタンをクリックすると、元の配列の対応する「選択された」キーの値を「true」に設定したいと思います。チェックを外す場合はその逆です。パレットで一度に選択できるスウォッチは 1 つだけだとしましょう。(理論的には、異なるキーと値が一意ではない可能性が高いと仮定して、後で配列を反復処理できるようにしたいと考えています。)
このちょっとしたことは、jquery メソッドを使用すると非常に簡単ですが、慣用的な角度の方法を学びたいと思います。助けてくれてありがとう。