0

次のコードでは、Entity 型に EntityAspect という名前のプロパティがあり、所有している Entity を指す Entity 型の Entity という名前のプロパティがあるため、スタック領域が不足することがよくあります。この再帰的な定義により、いくつかのツールが失敗したり、非常に遅く実行されたりしますが、最も顕著なのはノックアウトです。これに対処するために何かできることはありますか?

var custType = _this.metadataStore.getEntityType("Customer");
var cust1 = custType.createEntity();
var js = ko.toJS(cust1);
4

2 に答える 2

0

entityAspectとentityType(カスタムデータソースkendoデータソースからのスニペット)の両方を無視する必要があることがわかりました:

            this.entityManager.executeQuery(query)
            .then(function (xhr) {
                if (self.autoMapToJS) { // Breeze entities contain recursive properties (ugh!) - eliminate those
                    payload.data = ko.mapping.toJS(xhr.results, {
                        ignore: ['entityAspect', 'entityType']
                    });
                } else {
                    payload.data = xhr.results;
                }
                if (self.inlineCount) {
                    payload.total = xhr.inlineCount;
                }
                options.success(payload); // notify the DataSource that the operation is complete
            })
            .fail(function (rejected) {
                payload.error = rejected;
            })
            .done(); // terminate chain of promises
    }

特に、グリッド(wijmoとkendo)で使用しようとすると、それらのコントロールがプロパティを反復処理するため、微風データをマップしたり、スタックオーバーフローを楽しんだりする必要がありました。

于 2013-03-22T13:39:36.923 に答える
0

まだ実際に試したことはありませんが、できると思います

var js = ko.mapping.toJS(cust1, {
    ignore: ['entityAspect']
});
于 2013-01-08T19:40:07.437 に答える