【问题标题】:Calling rejectChanges on a entity with collection of complexTypes doubles the complexTypes in collection在具有 complexTypes 集合的实体上调用 rejectChanges 会使集合中的 complexTypes 加倍
【发布时间】:2014-02-24 17:37:03
【问题描述】:

这可能是我做错了,但我遇到了一个我认为可以重复的问题。这可能是设计使然,但现在我不知道如何绕过它。

我有一个实体,上面有几个 complexType 数组。如果我将新的 complexType 推送到数组中,我会看到集合中正确数量的对象。如果我在父实体上调用 rejectChanges,它会删除新的 complexType,但随后会复制该数组中的所有对象。

示例元数据 -

metadataStore.addEntityType({
    shortName: "Person",
    namespace: "MyNameSpace",
    dataProperties: {
        id: { dataType: "String", isPartOfKey: true },
        emails: { complexTypeName: "Email:#MyNameSpace", isScalar: false }
    }
});

metadataStore.addEntityType({
    shortName: "Email",
    namespace: "MyNameSpace",
    isComplexType: true,
    dataProperties: {
        id: { dataType: "String" },
        text: { dataType: "String" },
        preferred: { dataType: "Boolean" }
    }
});

重现步骤 -

  1. 创建实体
  2. 添加两种复杂类型的电子邮件
  3. 保存所有更改
  4. 添加另一种复杂类型的电子邮件
  5. 在父实体上调用 entityAspect.rejectChanges()
  6. 现在查看数组中的电子邮件数量

我假设在步骤 1-3 中这仍然会重现问题,现在我正在从服务器获取实体和复杂类型,所以我只执行步骤 4-6。

备注

我尝试在 complexAspect 上调用 rejectChanges,但它不存在。

我在电子邮件列表中有一个 ko.computed 来返回将其他设置为 false 的“首选”邮件,不知道这是否有帮助

我正在对 DOM 中的电子邮件列表进行排序

编辑

刚刚发现删除其中一种复杂类型并取消该更改时会发生同样的事情。

【问题讨论】:

  • 听起来不太好。我们会看看它。感谢您的报告。
  • @Ward 如果你们在上面找到任何东西,请告诉我,如果您不介意的话。
  • 我在等 Jay 看看这个,他正在度假。留在我们身边。

标签: javascript knockout.js breeze


【解决方案1】:

很抱歉花了这么长时间来做这个。它滑倒了……它现在位于当前的 GitHub 存储库中,并将在下一个版本中发布。

【讨论】:

  • 谢谢!很棒的东西
【解决方案2】:

我不知道您的问题是否得到答复,但这是我的问题!

原因: 微风中存在导致此行为的错误。我指的是微风 v1.4.11(仍然存在于 1.4.12 中)

解决方案: 这是我对这个问题的修复:

complexArrayMixin._rejectChanges = function() {
    if (!this._origValues) return;
    var that = this;
    this.forEach(function(co) {
        clearAspect(co, that);
    });
    this.length = 0;
    this._origValues.forEach(function(co) {
        that.push(co);
    });

    // mathieug: previous call already fills array with origValues
    //Array.prototype.push.apply(this, this._origValues);
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2011-01-30
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    相关资源
    最近更新 更多