1

WORKING DEMO

次の問題に直面しています:
json 配列があります:

self.customExportFileArray = ko.observableArray([
      {
        "IncludeInExportConversionTypesSelectList" :
          [
            {
              "ConversionGroupID" : 1,
              "Title" : "Quote Start - Auto"
            },
            {
              "ConversionGroupID" : 2,
              "Title" : "Quote Finish - Auto"
            },
            {
              "ConversionGroupID" : 5,
              "Title" : "Sales Data"
            }
          ],
        "ChooseFromConversionTypesSelectList" : [],
        "FileName" : "Template1",
        "FileFormat" : "Excel",
        "FilterSettings" : true,
        "ComparisonMetrics" : false
      },
      {
        "IncludeInExportConversionTypesSelectList":
          [
            {
              "ConversionGroupID" : 1,
              "Title" : "Quote Start - Auto"
            },
            {
              "ConversionGroupID" : 5,
              "Title" : "Sales Data"
            }
          ],
        "ChooseFromConversionTypesSelectList":
          [
            {
              "ConversionGroupID" : 2,
              "Title" : "Quote Finish - Auto"
            }
          ],
        "FileName" : "Template2",
        "FileFormat" : "CSV",
        "FilterSettings" : false,
        "ComparisonMetrics" : true
      }
    ]);
}


そして、1 つのドロップダウン、テキスト ボックス、いくつかのラジオ ボタン、および 2 つのリスト コントロールを含む HTML コードがいくつかあります。つまり、要点は次のとおりです。ドロップダウンにはcustomExportFileArray配列の長さと同じ数の項目が含まれている必要があり、項目名 (optionsText) はFileName配列のプロパティである必要があります。(現在は機能しているようです)。次に、アイテムをドロップダウンから変更する場合、Template1ファイル名テキストボックスに配列 (Template1) の FileName プロパティを入力し、Excel ラジオボタンをオンにし、フィルター設定を保持するをオンにし、Compatison Metrics をオフにし、「選択する変換タイプ」を選択します。 From' には配列のリストが含まれている必要がありますIncludeInExportConversionTypesSelectList(テキスト = タイトル)
しかし、私の HTML コードを見ると、何か間違ったことをしているのですが、正確にはわかりません。ドロップダウンから項目を変更して特定のデータをロードするわけではありませんが、すべて正しい方法で行っていると思いました。
追加の質問: 特定の Item 配列の変更を保存する方法 (たとえば、名前を変更したり、チェックしたラジオボタンを変更したりします)。
どんな助けでも大歓迎です。

前もって感謝します。

ワーキングデモ

4

1 に答える 1

3

ドロップダウンの値を「SelectedTemplate」などと呼ばれる監視可能なプロパティにバインドして、選択した値を保存し、変更可能なフィールドを選択したオブジェクトにバインドする必要があります。

<select data-bind="options: customExportFileArray, optionsText: function(item) { return item.FileName }, value: selectedTemplate">

<input type="text" data-bind="value: selectedTemplate().FileName"/>

self.selectedTemplate = ko.observable();
self.customExportFileArray = ko.observableArray([
      {
       ....

jsfiddle を次のように変更しました: http://jsfiddle.net/ptmwr/11/

ご覧のとおり、ドロップダウンの値バインディングはこの新しいプロパティを指すようになりました。オブジェクトを値として扱うには、optionstext のバインド方法を変更する必要がありました。

編集:

また、ブール値を RadioButton の checked プロパティにバインドしようとしていますが、これは実際には設計されていません。ブール値のプロパティにバインドする場合は、オンまたはオフのいずれかであるため、代わりにチェックボックス コントロールを使用する必要があります。

お役に立てれば!

于 2012-12-03T19:00:47.520 に答える