ブール値を使用したノックアウトラジオボタンバインディング

Dhanuka777

実行時に作成したこのフィドルによると、期待どおりに値が「青なし」オプションにバインドされません。

var viewModel = {    
    isBlue: ko.observable(false)
    //isBlue: ko.observable("false") this works
};

そこに述べたように、文字列値「false」を渡すと、バインディングが行われます。ノックアウトがタイプ比較も行うことは明らかです。

私のアプリケーションでは、ビューモデルを作成するkomapperを使用しています。booleanのプロパティの場合、bool値を作成し、boolの変数を初期化します。それらを文字列に変換する必要がありますか?入力ラジオボタン要素では、常に文字列値を処理する必要があります。チェックボックスにブール値を使用できますか?

「checkedValue」で試してみましたが、まだ運がありません。

user3297291

私は考えてあなたがノックアウトの以降のバージョンで修正されたバグを経験しています。

それが機能する方法(そしてあなたが試したように):

<input name="Test" type="radio" data-bind="checkedValue: true, 
                                           checked: isBlue" />Blue
<input name="Test" type="radio" data-bind="checkedValue: false, 
                                           checked: isBlue" />No Blue
ko.applyBindings({
  isBlue: ko.observable(false)
});

ノックアウトバージョン3.4を含めると、期待どおりに機能します。

ko.applyBindings({
  isBlue: ko.observable(false)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>

<label>
  <input name="Test" type="radio" data-bind="checkedValue: true, checked: isBlue" /> Blue
</label>
<label>
  <input name="Test" type="radio" data-bind="checkedValue: false, checked: isBlue" /> No Blue
</label>
<br />
<strong style="color: green">3.4.0: Does work</strong>

フィドル(2.1.0)で使用したバージョンを含めると、次のことは行われません。

ko.applyBindings({
  isBlue: ko.observable(false)
});
<script src="https://cloud.github.com/downloads/knockout/knockout/knockout-2.1.0.js"></script>

<label>
  <input name="Test" type="radio" data-bind="checkedValue: true, checked: isBlue" />Blue
</label>
<label>
  <input name="Test" type="radio" data-bind="checkedValue: false, checked: isBlue" />No Blue
</label>
<br />
<strong style="color: red">2.1.0: Does not work</strong>

編集:もう少し掘り下げた後:2.1.0のバグではないと思います。checkedValueその時点では存在すらしいませんでした!

ソースを見ると、チェックされた値を取得するためのロジックが2.1.0以降のバージョン間で大きく異なることがわかります。

2.1.0の場合:

if (element.type == "checkbox") {
  valueToWrite = element.checked;
} else if ((element.type == "radio") && (element.checked)) {
  valueToWrite = element.value;
}

3.4.0では:

 var checkedValue = ko.pureComputed(function() {
   // Treat "value" like "checkedValue" when it is included with "checked" binding
   if (allBindings['has']('checkedValue')) {
     return ko.utils.unwrapObservable(allBindings.get('checkedValue'));
   } else if (allBindings['has']('value')) {
     return ko.utils.unwrapObservable(allBindings.get('value'));
   }

  return element.value;
});

したがって、明確な答えは次のようになります。3.4.0に更新するか、3.4.0の動作を実装するカスタムチェックバインディングを作成します(バージョンの更新によってプロジェクトが破損する場合)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パラメータを使用したノックアウトクリックバインディング

分類Dev

オブジェクトリテラルのカスタムノックアウトバインディング

分類Dev

ノックアウトラジオボタンチェックバインディング

分類Dev

監視可能なオブジェクトを使用したjQueryfadeInfadeOutのノックアウトカスタムバインディング

分類Dev

ノックアウトJsラジオバインディングが値を設定していません

分類Dev

バウンディングボックスアノテーションなしでTensorflowオブジェクト検出をトレーニングする

分類Dev

ノックアウトデータバインディングブラウザツール

分類Dev

ノックアウトラジオボタンのクリックバインディングが機能しない

分類Dev

マッピングプラグインとデータバインディングを備えたノックアウト使用機能

分類Dev

Hammer.jsを使用したノックアウトバインディング

分類Dev

ラジオボックスへのノックアウトバインディング

分類Dev

ノックアウトを使用したD3スライダーのデータバインディング

分類Dev

クライアントオブジェクトモデルを使用してSharepointからドロップダウンリストにデータバインド

分類Dev

jquery、ノックアウトを使用したデータのクライアント側フィルタリング

分類Dev

ジオバウンディングボックスフィルターを使用したネストされたオブジェクトへのElasticsearchパーコレーション

分類Dev

データバインディングライブラリを使用したMVVMアーキテクチャでタブレイアウトを使用する

分類Dev

ブートストラップ デュアル リストボックス ノックアウト バインディング

分類Dev

オブジェクト配列から foreach バインディングをノックアウト

分類Dev

ブートストラップポップオーバーテンプレートはノックアウトバインディングを失います

分類Dev

ノックアウトjsforeachバインディングは[オブジェクトオブジェクト]を表示します

分類Dev

データバインディングリスト-折りたたみ可能なセット内のノックアウトを使用した表示

分類Dev

dom要素を移動したときのノックアウトバインディングエラー

分類Dev

ネストされたオブジェクトを使用したノックアウトで単純なエディターパターンを使用する

分類Dev

ネストされたオブジェクトを使用したノックアウトで単純なエディターパターンを使用する

分類Dev

ノックアウトデータバインディングを介して入力フィールドの値を取得する

分類Dev

マッピングプラグインを使用したノックアウトビューモデル

分類Dev

デフォルトのコンストラクターを持たないオブジェクトメンバーのスウィッグセッター

分類Dev

JQueryテンプレートを使用したノックアウトバインディングでデータが表示されませんか?

分類Dev

ノックアウト-タイトルバインディングからhtmlタグを削除します

Related 関連記事

  1. 1

    パラメータを使用したノックアウトクリックバインディング

  2. 2

    オブジェクトリテラルのカスタムノックアウトバインディング

  3. 3

    ノックアウトラジオボタンチェックバインディング

  4. 4

    監視可能なオブジェクトを使用したjQueryfadeInfadeOutのノックアウトカスタムバインディング

  5. 5

    ノックアウトJsラジオバインディングが値を設定していません

  6. 6

    バウンディングボックスアノテーションなしでTensorflowオブジェクト検出をトレーニングする

  7. 7

    ノックアウトデータバインディングブラウザツール

  8. 8

    ノックアウトラジオボタンのクリックバインディングが機能しない

  9. 9

    マッピングプラグインとデータバインディングを備えたノックアウト使用機能

  10. 10

    Hammer.jsを使用したノックアウトバインディング

  11. 11

    ラジオボックスへのノックアウトバインディング

  12. 12

    ノックアウトを使用したD3スライダーのデータバインディング

  13. 13

    クライアントオブジェクトモデルを使用してSharepointからドロップダウンリストにデータバインド

  14. 14

    jquery、ノックアウトを使用したデータのクライアント側フィルタリング

  15. 15

    ジオバウンディングボックスフィルターを使用したネストされたオブジェクトへのElasticsearchパーコレーション

  16. 16

    データバインディングライブラリを使用したMVVMアーキテクチャでタブレイアウトを使用する

  17. 17

    ブートストラップ デュアル リストボックス ノックアウト バインディング

  18. 18

    オブジェクト配列から foreach バインディングをノックアウト

  19. 19

    ブートストラップポップオーバーテンプレートはノックアウトバインディングを失います

  20. 20

    ノックアウトjsforeachバインディングは[オブジェクトオブジェクト]を表示します

  21. 21

    データバインディングリスト-折りたたみ可能なセット内のノックアウトを使用した表示

  22. 22

    dom要素を移動したときのノックアウトバインディングエラー

  23. 23

    ネストされたオブジェクトを使用したノックアウトで単純なエディターパターンを使用する

  24. 24

    ネストされたオブジェクトを使用したノックアウトで単純なエディターパターンを使用する

  25. 25

    ノックアウトデータバインディングを介して入力フィールドの値を取得する

  26. 26

    マッピングプラグインを使用したノックアウトビューモデル

  27. 27

    デフォルトのコンストラクターを持たないオブジェクトメンバーのスウィッグセッター

  28. 28

    JQueryテンプレートを使用したノックアウトバインディングでデータが表示されませんか?

  29. 29

    ノックアウト-タイトルバインディングからhtmlタグを削除します

ホットタグ

アーカイブ