我有一个包含三个视图模型的视图:Grower、Branch 和 GrowerList。
有两个按钮,Grower 和 Branch。GrowerList 取决于所选的分支。
场景如下: 1. 当用户来到那个页面时,会显示一个分支列表(BranchList)。(使用 jQuery mobile 的 listview 来显示列表)。
用户从 BranchList 中选择一个分支
用户可以单击“种植者”按钮显示种植者列表,然后可以选择种植者。
单击“种植者”按钮时,将显示种植者列表 (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>
问题是,虽然我通过 Firebug 看到正确的数据来自 GetGrowers 方法,但除了第一次单击 Grower 按钮时,没有任何内容显示为 GrowerList。我究竟做错了什么?没有javascript错误。