"Option"オブジェクトの配列を持っています。各「オプション」には、「名前」、「説明」、および「選択された」ブールフィールドが含まれ、選択されたかどうかが示されます。私はテンプレートを作成して、オプションとページ出力をすべての場所でうまくレンダリングするようにしました。ブール値のプロパティがトリガ依存の観測可能なトリガでない
しかし、「選択済み」フィールドの状態の変化をキャッチするトリガーは作成されませんでした。 "ajaxTrigger"依存オブザーバブルは、オプション配列が何らかの形で変化した場合でもサーバーへの呼び出しを引き起こすはずですが、そうではないようです。
誰かが間違っているのを誰でも見ることができますか?
JSONデータ:
{
"Name": "Add Helicopter Excursion",
"Description": "Enjoy a holiday excursion",
"Code": "HEL",
"Selected": false
}, {
"Name": "Add Scuba Diving",
"Description": "Go on a scuba diving trip",
"Code": "SCU",
"Selected": false
}
ビューモデル:
var viewModel = {
// other view model properties removed for this example
options: ko.observableArray(@(Html.Raw(Json.Encode(Model.Options))))
}
viewModel.ajaxTrigger = ko.dependentObservable(function() {
// other triggers removed for this example
this.options();
GetPrices();
}, viewModel);
テンプレート:
<script id="OptionsTemplate" type="text/x-jQuery-tmpl">
<li>
<input type="checkbox" data-bind="checked: Selected" />
<span data-bind="text: Name"> </span> <span data-bind="text: Description"> </span>
</li>
</script>
UI:
<ul data-bind='template: {name: "OptionsTemplate", foreach: options}'></ul>
ありがとうございました。配列内の項目に属するプロパティを使用して、SelectedプロパティをObservableにするにはどうすればよいですか? – BrightonDev
できることはいくつかあります。おそらくapplyBindingsを呼び出す前にあなたの配列をループするのが最も簡単で、現在の値にオブザーバブルセットを作成します: 'item.selected = ko.observable(item.selected);' –
これはビューの外で行うことですモデル? – BrightonDev