微风与淘汰js嵌套foreach:可以找到第三级数据

时间:2013-03-28 15:01:46

标签: knockout.js breeze

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

这是我的数据图: DataGraph

我对费斯阵列很满意。

这是淘汰赛标记:

        <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()但是费用的长度为零()。

我在淘汰赛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(“费用”)时,我得到了这个(来自Chrome Dev的Watch表达式):

enter image description here

由于

2 个答案:

答案 0 :(得分:0)

对于在同一元素上使用text和foreach绑定,您应该遇到绑定错误。 (多个绑定(text和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>

答案 1 :(得分:-1)

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

我猜你错过了一个扩展'子句'来到'费用'导航属性。