0

ビューモデルに次のコードがあります。

self.events = ko.observableArray();

function getAllEvents() {
    dataservice.events.getAll()
        .then(queryEventsSucceeded)
        .fail(queryEventsFailed);
}

function queryEventsSucceeded(data) {
    self.events(data.results);
}

function queryEventsFailed(error) {
    logger.logError(error.message, "Error retrieving events");
}

次に、次のようなビューがあります。

<div data-bind="wijevcal: { appointments: events }"></div>

ただし、このコードは最大呼び出しスタック サイズを超えた例外をスローします。

次のコードのようにハードコードされたイベントを self.events() に入力すると、完全に機能します。

self.events([{
    id: "event1",
    subject: "Green event.",
    start: new Date(2013, 4, 18, 9),
    end: new Date(2013, 4, 18, 11),
    allday: true,
    description: "The green event.",
    color: "green"
}]);

何が起こっているのか理解できません...

4

1 に答える 1

0

私の推測では、Wijmo コンポーネントは、バインドされたオブジェクト グラフをたどる際に、循環参照 (たとえば、Customer には Orders があり、各注文には Customer があります) を持つオブジェクトを処理できません。ナビゲーション プロパティのないエンティティ タイプでも、entity.entityAspect.entity循環参照があります。

そのサイクルを断ち切る方法を見つける必要があります。Wijmo 関係者に連絡して、彼らが推奨するものを確認してください。

即時の回避策はそれほどきれいではありません。バインドに必要な情報を正確に公開する中間オブジェクト (それぞれが「ItemViewModel」) にイベントをマップする必要があります。これは、たまには問題ない余分な作業ですが、日常的にやりたいことではありません。

于 2013-05-18T17:24:43.980 に答える