-2

Breeze と Knockout を使用してデータ グラフを表示する John Papa の優れた SPA の例を使用しています。それはほとんど機能していますが、 foreach ループでリストできないように見える配列で立ち往生しています。

ここに私のデータグラフがあります: データグラフ

Fees配列までは大丈夫です。

ノックアウト マークアップは次のとおりです。

        <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

クライアント側のクエリはどのように見えますか?.

「fees」ナビゲーション プロパティにアクセスするための expand 'clause' が欠落していると思います。

于 2013-03-28T20:10:41.923 に答える