我有一个复杂的图表。在图中有 a) 带有数组的类型和 b) 带有数组的类型数组。
我正在使用 Breezejs 加载图表并将其传递给 knockoutjs (2.2.1)。
似乎我可以对 a) 类型中的数组进行 foreach,但不能对 b) 类型中包含的数组进行 foreach。换句话说,b) 类型本身是循环的,并且包含数组的内部循环。b) 类型中的简单元素会显示在淘汰赛 html 输出中,但不会显示在数组中。
例如:主图是医生。医生有一个 ContactInfo(上面的“a”类型)类型,其中包含名字/姓氏等。ContactInfo 中包含地址、电话号码和电子邮件的数组。这些都可以使用 data-bind="foreach: ContactInfo().Addresses()" 列出
医师图表中还包含医师可以属于的成员资格数组(上面的类型“b”)。phys.Memberships[].Organization 包含组织的名称等。它还具有包含金额的费用类型数组 (phys.Memberships[].Fees[])。我可以得到组织名称,但不能得到费用。金额。
如果我将从服务器返回的 json 文字粘贴到一个变量中,消除 Breezejs 对数据执行的任何魔法以使它们成为 ko.observables 我能够访问 b) 类型及其内部数组,但如果我不能将微风调用的成功方法中的数据传递到 viewModel。
我会粘贴 json graph litteral 但它超过 500 行。
我只是想知道这是否是breezejs 的一个已知限制,或者我做错了什么。
这是视图模型:
var PhysiciansModel = function (physicians) {
var self = this;
self.showPhysList = ko.observable(false),
self.physicians = ko.observableArray(physicians);
self.selectedPhys = ko.observable(),
self.selectedPhysIndex = ko.observable(),
self.selectedPhysGraph = ko.observable(),
self.save = function () {
saveChanges();
};
self.getPhysByInitial = function (item, event) {
getPhysList(event.target.textContent);
self.showPhysList(true);
};
self.clickOnPhys = function (phys, event) {
if (self.selectedPhys() == null || (phys.Id() !== self.selectedPhys().Id())) {
self.selectedPhys(phys);
self.selectedPhysIndex(event.target.parentElement.parentElement.id);
getPhysGraph(self.selectedPhys().Id());
self.showPhysList(false);
}
};
};
谢谢