0

Knockout でオブジェクトの配列を作成したいと考えています。各オブジェクトは、監視可能な配列 (英数字コードのリストを含む) と、コードに関連する説明用のテキスト フィールドで構成されます。リストからコードを選択すると、それに応じてテキスト フィールドが更新されます。コードを使用して Web サービスから対応する説明を取得しますが、コード ドロップダウン リストの選択から subscribe イベントを起動することはまだできません。次に、選択したテキストを取得し、説明フィールドを更新する必要があります。これが私のjsFiddleです:

http://jsfiddle.net/phykell/tuqQp/

問題は、subscribe メソッドを宣言する方法だと思います。

self.Items.subscribe(function(data) {   
    alert(data);
    data.Description = data.Code;
});

このサンプルでは、​​コードを説明フィールドにコピーしようとしています (実際のコード値を表示するコード ドロップダウン リストを取得できていないことに注意してください!

見てくれてありがとう:)

4

1 に答える 1

2

Code 値を表示するためにコードに HTML を少し追加し、items 変数を削除しました。不要だったからです。何をサブスクライブしようとしているのか正確にはわかりません (Knockout は、アイテムのプロパティの変更を自動的にサブスクライブします。アイテムの追加または削除をサブスクライブしようとしているだけの場合は、コードで既に実行しています)

http://jsfiddle.net/tuqQp/3/

注 : リストに何を表示するかを知るには、Knockout の optionsText 属性が必要です。

    <select style="width: 200px;" 
        data-bind="options: $root.availableItems, optionsText: 'Description', value: Code, optionsCaption: '-- Select Code --'">
    </select>

編集

わかりました、あなたが望むことをするためにフィドルを更新しました。

http://jsfiddle.net/tuqQp/8/

値を取得しようとしている場合、サブスクライブする必要はありません。モデル (関数) を作成し、依存したいものの値に基づいたオブザーバブルを使用するだけです。フィドルでは、コードの値に基づいて計算された (説明) を作成しました。コードの値が変更されるたびに、説明が呼び出されます。これは、自動的にサブスクライブされるためです。

于 2013-07-03T17:26:45.080 に答える