Knockoutjs-checked-binding

提供:Dev Guides
移動先:案内検索

KnockoutJS-チェック済みバインディング

このバインディングは、チェック可能なフォーム要素とViewModelプロパティ間のリンクを作成するために使用されます。 ほとんどの場合、これらのフォーム要素にはチェックボックスとラジオボタンが含まれます。 これは、ユーザーがフォームコントロールをチェックした瞬間に、それぞれのViewModelプロパティが変更され、その逆も行われる双方向のバインド方法です。

構文

checked: <binding-value>

パラメーター

主なパラメータ

  • チェック可能要素の状態はパラメーター値に設定されます。 以前の値は上書きされます。
  • チェックボックス-ViewModelパラメータ値がtrueの場合、DOM要素がチェックされ、falseの場合はオフになります。 ゼロ以外の数字、空でない文字列、およびnull以外のオブジェクトは真のブール値で解釈されますが、未定義、ゼロ、および空の文字列は偽の値と見なされます。
  • ラジオボタン-ラジオボタンは文字列形式で機能します。 つまり、パラメーター値がラジオボタンノードの値と正確に一致する場合にのみ、KnockoutJSは要素の値を設定します。 ユーザーが新しいラジオボタンの値を選択すると、プロパティに新しい値が設定されます。
  • パラメータがオブザーバブルの場合、要素の値は、基礎となるオブザーバブルが変更されたときにチェックまたはチェック解除されます。 オブザーバブルが使用されていない場合、要素は1回だけ処理されます。

追加パラメーター

  • checkedValue -checkedValueオプションは、要素の値属性の代わりに、checkedbindingが使用する値を保持するために使用されます。 これは、チェックされた値が文字列以外の場合(整数やオブジェクトなど)に非常に便利です。

たとえば、それぞれのチェックボックスがオンになっている場合、アイテムオブジェクト自体がselectedValue配列に含まれる次のコードスニペットを見てください。

<!-- ko foreach: items -->
   <input type = "checkbox" data-bind = "checkedValue: $data,
      checked: $root.chosenValue"/>
   <span data-bind = "text: itemName"></span>
<!--/ko -->

<script type = "text/javascript">
   var viewModel = {

      itemsToBeSeen: ko.observableArray ([
         { itemName: 'Item Number One' },
         { itemName: 'Item Number Two' }
      ]),

      chosenValue: ko.observableArray()
   };
</script>

checkedValueパラメーターがObservable値である場合、基になる値が変更されるたびに、バインディングはチェックされたモデルプロパティを更新します。 ラジオボタンの場合、KOはモデル値を更新するだけです。 チェックボックスの場合、古い値が新しい値に置き換えられます。

チェックボックスコントロールの使用方法を示す次の例を見てみましょう。

<!DOCTYPE html>
   <head>
      <title>KnockoutJS Checked checkbox Binding</title>
      <script src = "https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.3.0.js"
         type = "text/javascript"></script>
   </head>

   <body>
      <p> The required files are installed.
      Please check below to complete installation</p>

      <p><input type = "checkbox" data-bind = "checked: agreeFlag"/>
      I agree to all terms and conditions applied.</p>

      <button data-bind = "enable: agreeFlag">Finish</button>

      <script type = "text/javascript">
         function ViewModel() {
            this.agreeFlag =  ko.observable(false)      //Initially unchecked
         };

         var vm = new ViewModel();
         ko.applyBindings(vm);
      </script>

   </body>
</html>

出力

上記のコードがどのように機能するかを確認するために、次の手順を実行してみましょう-

  • 上記のコードを checked-checkbox-bind ファイルに保存します。
  • このHTMLファイルをブラウザーで開きます。
  • [完了]ボタンは、ユーザーが契約条件に同意した場合にのみアクティブになります。

ラジオボタンコントロールの使用を示す以下の例を見てみましょう-

<!DOCTYPE html>
   <head>
      <title>KnockoutJS Checked Radio Button Binding</title>
      <script src = "https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.3.0.js"
         type = "text/javascript"></script>
   </head>

   <body>
      <p> Select gender type from below:</p>
      <div><input type = "radio" name = "gender" value = "Male"
         data-bind = "checked: checkGender"/> Male</div>

      <div><input type = "radio" name = "gender" value = "Female"
         data-bind = "checked: checkGender"/> Female</div>

      <div><p>You have selected: <span
         data-bind = "text:checkGender "></span></p></div>

      <script type = "text/javascript">
         function ViewModel () {
            checkGender =  ko.observable("Male")    //Initially male is selected
         };

         var vm = new ViewModel();
         ko.applyBindings(vm);
      </script>

   </body>
</html>

出力

上記のコードがどのように機能するかを確認するために、次の手順を実行してみましょう-

  • 上記のコードを checked-radio-button-bind ファイルに保存します。
  • このHTMLファイルをブラウザーで開きます。
  • ラジオボタンには、性別タイプの値が保持されます。