1

昨日、たくさんの助けを借りて、デモ カートの例を取り上げ、それを自分のアプリ (B&B ルームの検索) に適用しました。

アイデアは、(1) ルームタイプから選択すると、(2) 占有者が入力されます - (2) 占有者から選択すると、(3) 必要な数が入力されます

スクリーンショット 問題は、占有者数が選択されると、新しく追加されたドロップダウン リストにモバイル スタイルを追加できないことです。 スクリーンショット 2

ここに実用的なフィドルがあります:http://jsfiddle.net/mtait/g8cQz/5/

@Dan の助けを借りて、次のように追加することで、スタイリングを Occupants ドロップダウンに適用することができましたjqmOptions: sampleProductCategories

     <td>
        <select data-bind='jqmOptions: sampleProductCategories, options: $root.RoomCategories, optionsText: "TypeName", optionsCaption: "Select...", value: category'></select>
     </td>

     <td data-bind="with: category">
          <select data-bind='jqmOptions: sampleProductCategories, options: Occs, optionsText: "occdesc2", optionsCaption: "Select...", value: $parent.occupancy'></select> 
     </td>

      <td class='quantity' data-bind="with: category">
          <select data-bind="visible: $parent.occupancy, options: ko.utils.range(0, TypeCount), value: $parent.quantity"></select>
      </td>

ko.bindingHandlers.jqmOptions = {
update: function (element, valueAccessor, allBindingsAccessor, context) {
    ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor, context);
    $(element).selectmenu();
    $(element).selectmenu("refresh", true);
   }
  };

占有者が選択されている場合、必要な数のドロップダウン リストまたは占有者のドロップダウン リストを取得し、必要な数にスタイルを追加するには、何を追加する必要がありますか?

ありがとうございました、

マーク

4

1 に答える 1

0

最初の jQuery モバイル選択を init メソッドに移動し、オプション バインディングで update を手動で呼び出す代わりに applyBindingsToNode も使用します

ko.bindingHandlers.jqmOptions = {
    init: function(element, valueAccessor, allBindingsAccessor, context) {
        ko.applyBindingsToNode(element, { options: valueAccessor() }, context);
        $(element).selectmenu();
    },    
    update: function (element, valueAccessor, allBindingsAccessor, context) {
        $(element).selectmenu("refresh", true);
    }
};
于 2013-08-28T08:06:58.873 に答える