0

ノックアウト.jsの問題で私を助けてください:

変数 currentObject が定義されていないのはなぜですか? 現在選択されているオブジェクトを変数に保存するにはどうすればよいですか?

ダウンドロップリストのhtmlビューに従っています:

 <select data-placeholder="Select object" class="span5" id="objects" data-bind="options: objects, optionsText: 'Name', optionsValue: 'Id', value: currentObject">
                    <option></option>
 </select>

モデルビュー:

function baseViewModel() {
    self.objects = ko.observableArray([]);

    ...

    self.currentObject = ko.observable();

    ...



    self.func = function() {

        //allert(self.objects()[0].Name) //return correct Name
        alert(self.currentObject().Name) //returns undefinded


    }

}
4

1 に答える 1

0

あなたのデータバインドでは、 currentObject と select のvaluevalue: currentObjectの間で実際に双方向のバインドを行うものがあります。

選択の値はId、選択されたオプションのオブジェクトのフィールドに設定されます (optionsValue: 'Id'データバインドのため)。そのため、 currentObject は選択したオブジェクトの Id フィールドに設定されます.Name。これが、未定義になる理由です。

まったく使用しないことをお勧めoptionsValueします。この方法では KO が値を処理し、selectbox の値が実際に選択されたオブジェクトであるかのようになり、currentObject を選択されたオブジェクトにvalue: currentObject正しく設定します。(そして、 を使用したい場合はoptionsValue、 currentObject がオブジェクト自体ではなく、オブジェクトのフィールドに設定されることを知っておいてください)

フィドル: http://jsfiddle.net/antishok/KXhem/78/

于 2012-10-27T15:12:25.170 に答える