Grower、Branch、GrowerList の 3 つのビューモデルを含むビューがあります。
Grower と Branch の 2 つのボタンがあります。GrowerList は、選択したブランチに依存します。
シナリオは次のとおりです。 1. ユーザーがそのページに来ると、ブランチのリスト (BranchList) が表示されます。(jQuery モバイルのリストビューを使用してリストを表示します)。
ユーザーは BranchList からブランチを選択します
ユーザーは「栽培者」ボタンをクリックして栽培者のリストを表示し、栽培者を選択できます。
「Grower」ボタンをクリックすると、栽培者の一覧(GrowerList)が表示されます。GrowerList は、選択したブランチ ID によって異なります。
Grower、Branch、および GrowerList には、それぞれ ViewModel があります。更新された GrowerList を表示するために、次のことを行っています。
$("#btnGrower").click(function () {
ko.applyBindings(new GrowerListModel(), document.getElementById("divGrowerList"));
});
GrowerList の ViewModel は次のようになります。
function MyGrower(data) {
this.Id = ko.observable(data.GrowerId);
this.name = ko.observable(data.GrowerName);
}
function MyGrowerListModel() {
// Data
var self = this;
self.growers = ko.observableArray([]);
//Load initial state from server and populate viewmodel
$.getJSON("Grower/GetGrowers", function (allData) {
var mappedUsers = $.map(allData, function (item) { return new MyGrower(item) });
self.growers(mappedUsers);
});
}
そして、値をバインドしている場所:
<div id="divGrowerList">
<ul data-bind="foreach: growers" data-role="listview" id="ulGrowerList">
<li><a data-bind="attr: {id: Id}"><span data-bind="text: name" /></a></li>
</ul>
</div>
問題は、正しいデータが GetGrowers メソッドから取得されていることを Firebug で確認できますが、Grower ボタンが最初にクリックされたときを除いて、GrowerList として何も表示されないことです。私は何を間違っていますか?JavaScriptエラーはありません。