BreezeJS截断umapped属性的值

时间:2014-06-19 17:17:39

标签: angularjs breeze

我一直在项目中使用BreezeJS v 1.4.11,一切正常。然后我将其更新到v1.4.13,现在我遇到了未映射属性的问题。我知道我不应该搞砸那些有效的东西!

我的EF类上有几个只读的十进制属性。它们在服务器端计算并通过网络正确返回。我在Fiddler和Chrome中的开发者工具中检查过这个。

属性值在JSON结果中传递回客户端,但不会在服务器的元数据中显示为已定义的属性。这是可以理解的,因此在客户端我有一个model.js,我在Pluralsight上按John Papas Angular course(非常好的BTW)中的描述扩展了元数据。我添加属性(使用适当的名称)并将初始值设置为0.0。然后Breeze应该将传入的值“映射”到这些新属性 - 它会这样做。

    function registerPaymentEntity(metadataStore) {
        metadataStore.registerEntityTypeCtor('Payment', Payment);

        function Payment() {
            this.TotalPayment = 0.0;
            this.StandardPayment = 0.0;

            // other stuff...
        }
    }

然而......在1.4.11中一切都还可以,但在1.4.13中它似乎是截断十进制值并丢失所有小数位。如果我发回,例如,2500.36它将在1.4.11中显示正常但在1.4.13中显示为2500.00。

起初我以为是我对ngGrid单元格应用了一些奇怪的过滤,但是在挖掘开发工具时,看起来Breeze后备存储区保持截断值而不是完整值。

我无法检查1.4.12,因为我无法从源代码中找到下载位置 - 这需要一些我不熟悉的工作(双关语)此刻。我查看了源代码,但.11和.13之间有很多变化,我还没有找到任何东西。

这可能是一个错误报告,而不是一个“真正的”SO问题,但另一方面,我可能做错了所以要求澄清一点。

所以,问题是 - 是否有其他人遇到类似问题或者您的只读小数属性是否正常。如果是这样,你可以对我应该做的事情有所了解。

1 个答案:

答案 0 :(得分:0)

这是一个错误,现在已在Breeze.js GitHub回购中修复。这个修复程序也将成为下周某个时候下一个完整的Breeze.js版本(1.4.14)的一部分。

此处还有一个注意事项:另一个错误也已修复,最终可能会破坏您的代码。以前,当涉及“未映射”属性时,metadataStore.namingConvention不用于在客户端和服务器名称之间进行转换;从(1.4.14)开始,namingConvention用于转换未映射的属性名称(以及映射的道具名称)。