knockoutJSで次のパターンを達成する方法を知っている人はいますか? 私はいつもこのパターンをApacheのフレックスで使用し、私がそれを模倣できるかどうかを見たいと思っています。 私は観察可能なものを別のものに置き換える方法がわかりません。どんな助け/思考も大変に感謝しています。ノックアウトで選択したオブジェクトパターン
//モデル
myViewModel = {
items : ko.observableArray(),
selected_item : ko.observable()
}
//ビュー
<h3 data-bind="text : myViewModel.selected_item.name"> </h3>
<ul>
<!-- ko foreach: myViewModel.items -->
<li data-bind="text : name"/>
<!-- /ko -->
</ul>
//ロジック
$('li').click(function(e){
//check ko.dataFor(this) has different id from that of myViewModel.selected_item
//if id different
//set myViewModel.selected_item to ko.dataFor(this)
//rejoice as h3 text changes
})
+1通常、私は、独自の方法でロジックを入れたいが、@RPNiemeyerの第二の例のように、シンプルな短いと甘いもののために、私はちょうどそのインラインソリューションで行くと思います。魅力のように動作します –
私は通常、他のロジックを実行するために部分的に別のメソッドを使用します。主に動詞ではなく名詞( 'click:$ parent.selected_item') .selectItem') –
パーフェクト - ありがとう、それは私を助けてくれました。私はマークアップ内でディレクティブを使ってやってしまいました(フィドル#2)。しかし、バインディングをラップするためにdivを使用する代わりに、私はko指示文を使用しました。 <! - ko with:selected_item - >バインディングはこちら – Chin