0

複雑なグラフがあります。グラフ内には、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 グラフのリテラルを貼り付けますが、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);
      }
    };
  };

ありがとう

4

0 に答える 0