9

2つの質問があります。

私はノックアウトを使用しています(私はKO noob sryです)。クリックイベントで観察可能な特定のノックアウトに値を割り当てたいのですが、これはクリックイベント自体(および私が渡す値)でのみ決定する必要があります。 data-bind = click)...実行できますか...値を割り当てるオブザーバブルを知る代わりに、名前(文字列値)だけでノックアウトオブザーバブル変数を取得できますか?予め?

そして、第二に重要性が低いですが、そのような関数ko.ObservableByName(stringName)が存在する場合、それを何らかの方法で使用し、ページの読み込み時に複数の選択項目の事前選択を割り当てることができます。

これを実行しようとしました... data-bind= "click:loadData.bind($ data、' param1 '、' param2 ')"を使用しました。その後、これらのparam1およびparam2文字列を取得できます。次の行に沿って何かを実行するイベントハンドラーをノックアウトビューモデルで構築することにより、値を設定します。

self.loadData = function (src, dest) {
    //dest is 'param1', src is 'param2', both are stings
    if (src == 'param1')
       self.p1observable($('#' + dest).val());
    else
       self.p2observable($('#' + dest).val());
}

これに関する私の最大の問題は、p1 / p2オブザーバブルがすでに指定され、ハードコーディングされている関数を構築する必要があることですが、実際には、param1とparam2を名前またはいくつかの名前による参照として使用するようにしたいですオブザーバブルを自由に渡すことができ(割り当てられる値、または値を最初のオブザーバブルにコピーしたい別のオブザーバブルと一緒に)、クリックで渡された値を割り当てることができます私が選んだオブザーバブルへの関数呼び出し(そしてそのような小さな関数はたくさんありません)...

多分私はそれを間違った方法で行っていますか?文字列値を渡すべきではないかもしれません...監視可能なオブジェクトを渡そうとするべきかもしれませんが、データバインド内でそれを行うにはどうすればよいですか?myViewModel.myObservableなどを記述しますか?

4

1 に答える 1

16

親オブジェクトがある場合、次の構文を使用してオブザーバブルにアクセスできます。

viewModel[observableName]

次のように値を設定します。

viewModel[observableName](newValue)

以下は、ドロップダウンからプロパティ名を選択し、それに応じて値を設定できるサンプルと、ボタンがオブザーバブル/値の設定に直接バインドされている別のサンプルです: http://jsfiddle.net/rniemeyer/CTnUQ/

于 2012-01-18T14:49:37.737 に答える