0
サイト用のサイトとクライアントを持つjsonオブジェクトがあります。 1つのサイト には多くのクライアントを置くことができます。複雑なjsonオブジェクトとノックアウトバインディングを使用した親/子ドロップダウンリストの作成
私は ノックアウトバインディングを使用して、サイトのドロップダウンリストボックス(親)にデータを入れる方法を知っています。しかし、親の ドロップダウンリストでonchangeが発生したときに、 クライアントのドロップダウンリスト(子)をどのように配置するかわかりません。
私は、下のコード を変更して、マスター/子のドロップダウンリスト の達成方法を私に教えていただければ幸いです。
乾杯
C
var posterArray = ([
{ SiteId: 1,
SiteName: "Mail",
ClientSite:[
{ ClientId: 1, ClientName: "Mail Client A" }, { ClientId: 1, ClientName: "Mail Client B"}]
},
{ SiteId: 2,
SiteName: "DSAC",
ClientSite:
{ ClientId: 1, ClientName: "DSAC Client A" }
}
]);
var ViewModel = function() {
var self = this;
// Poster
self.PosterList = ko.mapping.fromJS([]);
self.PosterListEnable = false;
self.refreshPosterList = function() {
var data = [];
if (posterArray.length == 0) {
data = [{ SiteId: 'No Posters', SiteName: 'No Posters'}];
} else if (posterArray.length == 1) {
data = posterArray;
} else {
data = [{ SiteId: 'Select a Poster', SiteName: 'Select a Poster'}];
data.push.apply(data, posterArray);
}
ko.mapping.fromJS(data, null, self.PosterList);
self.refreshClientList();
};
//Client
self.ClientList = ko.mapping.fromJS([]);
self.refreshClientList = function() {
};
};
var viewModel = new ViewModel();
$(function() {
ko.applyBindings(viewModel);
viewModel.refreshPosterList();
});
</script>
<fieldset class="SearchFilter">
<legend>Search Filter</legend>
<div class="SearchItem">
<span>Poster:</span>
<select id="dllPoster" data-bind="foreach: PosterList, disable:PosterList().length <= 1" onchange="viewModel.refreshClientList();">
<option data-bind="text: SiteName, attr:{value:SiteId}"></option>
</select>
<select id="ddlClient" data-bind="with: PosterList.ClientSite ">
<option data-bind="text: ClientName, attr:{value:ClientId}"></option>
</select>
</div>
</fieldset>
こんにちはckalは、お返事とご協力に感謝いたします。あなたが提案した投稿を読み、jsFiddleを見ます。 – Cleyton
こんにちはckal、あなたは私に値をどのように説明してください:selectedPosterバインドは動作しますか?あなたはそれに価値を割り当てません。あなたはそれをselectで選択された値に設定しますか? ' – Cleyton
こんにちは、私は自分のoptionsCaptionに子選択のロジックを追加しようとしていますが、動作していません – Cleyton