0

これに完全に行き詰まった。周りを読んでみてくださいが、信じられないことに、値をブール値として必要とする可能性のある 2 つ以上のラジオボタンを持っている人を見つけることができません。

次のようなビューが与えられた場合:- ここに画像の説明を入力

対応するノックアウト ビューモデル:-

function driver(name, license, maindriver) {
var self = this;

self.DriverName = ko.observable(name);
self.License = ko.observable(license);
self.IsMainDriver = ko.observable(maindriver);

}

これらを「IsMainDriver」の実際のブール値で投稿するのに、あらゆる種類の問題があります。これらのいずれかを選択する場合は、true に設定する必要があります。その他は false に設定する必要があります。以下のhtmlにさまざまな調整を試みましたが、どこにも行きません。一部の投稿では、真/偽が文字列として設定されていることについて何かを言っています。たとえば、「true」または「false」です。私はノックアウトオブザーバブルエクステンダー、コールバックを試しましたが、私が言ったように、これまでのところ何も機能していません. firebug の「IsMainDriver」に対して「オン」が有効でない場合があります。私がこれまでに行った最善の努力は、唯一の問題が 'IsMainDriver' オブザーバブルが true に設定されると再び false に設定されないことであったカスタム バインディングを使用することです。 、投稿時、複数の行で 'IsMainDriver' が true に設定されていました (意味があることを願っています)。どんな助けでも大歓迎です。

<td>
  <input name="mainDriverGroup[]" type="radio" data-bind="checked: IsMainDriver, value:IsMainDriver()" class="required" data-val-required="Please choose the main driver." />
  <span class="field-validation-valid" data-valmsg-for="mainDriverGroup[]" data-val-replace="true"></span>
 </td>
4

1 に答える 1

0

私は問題を抱えた非常に基本的なjsfiddleを作成しました。

ラジオ ボタンが 1 つしかないため、ブール値をノックアウトおよびバックの適切な値に変換する計算オブザーバブルを作成しました。

    this.IsMainDriverFormatted = ko.computed({
    read: function () {
        if (self.IsMainDriver() === true) {
            return 'on';
        }
        else {
            return 'off';
        }
    },
    write: function (value) {
        if (value === 'on') {
            self.IsMainDriver(true);
        }
        else {
            self.IsMainDriver(false);
        }
    },
    owner: this
    });

ビューで「checked」バインディングが使用されました。

<input name="IsMainDriver" type="radio" data-bind="checked: IsMainDriverFormatted" />
于 2013-07-24T20:04:43.597 に答える