0

編集可能なグリッドを作成しています。ギフト名は自動提案テキストボックスです。

値を選択してその値を取得しようとすると、その値が表示されません。私のコードは[ここ](http://jsfiddle.net/bhagirathip/x6H8s/38/)です

テキストボックスで値を選択し、送信ボタンをクリックします。最初のテキストボックスの値が表示されるはずですが、nullが表示されています。

私が間違えたところ。

-前もって感謝します

4

2 に答える 2

2

ここでの本当の問題は、namejQueryのオートコンプリートを使用しているときに正しく更新されないことのようです。バインディングを変更する必要がありますname

<input data-bind="value: name, valueUpdate: 'blur'" class='tags' />

ぼかしイベントは、要素がフォーカスを失ったときに発生します。そして、それが発生するたびに、KOはバインディングに値を更新するように強制します。


KOドキュメント

valueUpdate

バインディングにvalueUpdateというパラメーターも含まれている場合、これは、変更イベント以外の変更を検出するためにKOが使用する必要がある追加のブラウザーイベントを定義します。

于 2012-10-31T09:38:47.783 に答える
0

私はあなたのフィドルを見ました、そしてあなたは呼び出している間にいくつかの括弧を逃しているようですself.gifts()

これです:

self.save = function () {
    var abc = $.parseJSON(ko.toJSON({ gifts: self.gifts }));
    alert(abc.gifts[0].name);
};

する必要があります:

var abc = $.parseJSON(ko.toJSON({ gifts: self.gifts() }));

最後に括弧を付けます。

関数にラップされた値self.gifts = ko.observableArray(gifts);を返すことを覚えておく必要があるため、値にアクセスするには、を呼び出す必要があります。self.gifts()

giftsこの例を実行すると、空の名前値で配列を初期化したため、空の文字列でアラートが表示されます。

ここで名前に値を追加する場合:

var viewModel = new GiftModel([
    { name: "", price: "" }
]);

次に、その名前をアラートボックスに表示します。更新されたjsfiddleはこちらをご覧ください。

于 2012-10-31T08:11:19.710 に答える