0

下面的代码经常会用完堆栈空间,因为类型 Entity 有一个名为 EntityAspect 的属性,它有一个名为 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 和剑道)一起使用时,我被迫映射微风数据或享受堆栈溢出,因为这些控件将遍历属性。

于 2013-03-22T13:39:36.923 回答
0

我还没有真正尝试过,但我认为你可以做到这一点

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