私はノックアウトしてチュートリアルを操作するのは初めてですが、運がありません。
チェックボックスのグループと同様に動作するように画像の配列を設定しようとしています。これらは最初、配列「self.brands」ですべて「true」に設定され、クラス「.active」を持つ必要があります。クリックイベントで、trueまたはfalseを切り替えて、クラスを.activeから.deactiveに設定してもらいたい
配列'self.brands'は4つのプロパティを表します。ID、imagepath、altタグ、チェック済み(trueまたはfalse)。画像をクリックすると、true / false値が切り替わり、cssが.active {opacity:1}からdeactive {opacity:0.2}に設定されます。
これがself.brandsの監視可能な配列です。
self.brands = ko.observableArray([["1",'acdsee.jpg','ACD See',"true"], "2",'amazon.jpg','Amazon',"true"], ["3",'aol.jpg','AOL',"true"], ["4",'cisco.jpg','Cisco',"true"];
画像のHTMLは次のとおりです。
<a href="#">Select All</a> | <a href="#">Deselect all</a>
<br />
<div id="brands">
<ul data-bind="foreach: brands" class="brands">
<li data-bind="click: $parent.setBrand,
css: { active: $data == $root.chosenBrandId() }"><a href="javascript:void(0);" data-bind="click: $parent.setBrand"> <img data-bind="attr:{src: $data[1], alt: $data[2]}" /></a>
</li>
</ul>
</div>
css:
.active {opacity:1}
.deactive {opacity:0.2}
ノックアウトコード:
self.chosenBrandId = ko.observable();
self.setBrand = function(brand) {
self.chosenBrandId(brand);
};
これを設定する際に問題が発生します。現在、画像をクリックすると、一度に1つの画像にのみ.activeクラスが適用されます。self.chosenBrandId(brand)の値を取得しようとすると、[object、object]が返されます。したがって、chosenBrandID内の値をtrueに設定する方法がわからないので、試してみました
self.chosenBrandId(brand)[3];
しかし、それは未定義を返すので、値を設定する方法や、[object、object]を返す「brand」変数内で取得できるパラメーターさえも疑問に思っています。
これを次のように動作させますか?
1)個々の画像をクリックすると、.activeクラスと.deactiveクラスが切り替わりますか?
2)個々の画像をクリックすると、self.brands配列のブール値true / falseが変更されますか?
3)[すべて選択]または[すべて選択解除]リンクをクリックしたときに、すべての画像のcssと配列の値を.activeとtrueまたは.deactiveとfalseから変更する関数を作成しますか?