-2

我正在使用 John Papa 的优秀 SPA 示例,使用 Breeze 和 Knockout 来显示数据图。它大部分都在工作,但我被困在一个似乎无法在 foreach 循环中列出的数组中。

这是我的数据图: 数据图

我对费用数组很好。

这是淘汰赛标记:

        <div id="memberships" class="span9">
      <div class="span8">Memberships</div>
      <div class="span9 table-bordered" data-bind="foreach: memberships()">
        <span class="span5" data-bind="text: organization().name()"></span> <span class="span3" data-bind="text: '    Status:' + status().description()"></span>
        <div class="label-important span2" data-bind="text: 'Dues paid:'"></div>
        <div class="span5" data-bind="text: 'dues count:' + fees().length,  foreach: fees()">
          <div data-bind="text: 'Method:' + payMethod()"></div>
          <div data-bind="text: receivedOn()"></div>
          <div data-bind="text: membershipYear()"></div>
        </div>
      </div>
    </div>

我可以看到organization().name() 和status().description(),但是fees() 的长度为零。

我在淘汰赛 foreach 循环中查看了此类问题的其他答案,问题似乎在于数组是否是 observableArray。然而,在这种情况下,Breeze 正在设置它,所以我无法判断我做错了什么或者 Breeze 是。

这是微风的EntityQuery:

  var getPhysicianDetails = function (physicianObservable) {
    var id = physicianObservable().id();
    var query = EntityQuery.from('Physicians')
      .expand(
        "ContactInfo.Emails.Scope, " +
        "ContactInfo.Phones.Scope, " +
        "ContactInfo.Addresses.Scope," +
        "PhysicianSpecialties.Specialty, " +
        "PhysicianNotes, " +
        "Memberships.Organization, " +
        "Memberships.Status," +
        "Memberships.Fees.PayNotes," +
        "IncentivePrograms.Notes," + 
        "PhysInOrgs.Organization, " +
        "IncentivePrograms.IncentiveProgram.Payer," +
        "PhysicianPayers.Payer"
        )
      .where("id", "==", id);

当我执行 getEntityType("Fee") 时,我得到了这个(来自 Chrome Dev 的 Watch Expressions):

在此处输入图像描述

谢谢

4

2 回答 2

0

在同一元素上使用 text 和 foreach 绑定应该会出现绑定错误。(多个绑定(文本和 foreach)试图控制同一个元素的后代绑定。您不能在同一个元素上同时使用这些绑定。;)

你可以改变这个:

<div class="span5" data-bind="text: 'dues count:' + fees().length,  foreach: fees()">
      <div data-bind="text: 'Method:' + payMethod()"></div>
      <div data-bind="text: receivedOn()"></div>
      <div data-bind="text: membershipYear()"></div>
</div>

至:

<div class="span5">
    <div data-bind="text: 'dues count:' + fees().length"></div>

     <!-- ko foreach: fees -->
         <div data-bind="text: 'Method:' + payMethod()"></div>
         <div data-bind="text: receivedOn()"></div>
         <div data-bind="text: membershipYear()"></div>
     <!-- /ko -->
</div>
于 2014-05-02T14:09:42.157 回答
-1

您的客户端查询是什么样的?

我猜你错过了一个扩展“条款”来访问“费用”导航属性。

于 2013-03-28T20:10:41.923 回答