可能的错误:Breeze.js 1.5——除非指定一个';写';选项
我想我发现了一只虫子 刚刚更新到新的Breeze.JS v1.5,现在出现以下错误:可能的错误:Breeze.js 1.5——除非指定一个';写';选项,breeze,Breeze,我想我发现了一只虫子 刚刚更新到新的Breeze.JS v1.5,现在出现以下错误: Error: Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters. at dependentObservable (http://localhost:54663/Scripts/k
Error: Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.
at dependentObservable (http://localhost:54663/Scripts/knockout-3.2.0.debug.js:1712:17)
at setDpValueSimple (http://localhost:54663/Scripts/breeze.debug.js:5083:5)
at defaultPropertyInterceptor (http://localhost:54663/Scripts/breeze.debug.js:4945:13)
at write (http://localhost:54663/Scripts/breeze.debug.js:16415:25)
at dependentObservable (http://localhost:54663/Scripts/knockout-3.2.0.debug.js:1710:17)
at proto.setProperty (http://localhost:54663/Scripts/breeze.debug.js:16454:13)
at Anonymous function (http://localhost:54663/Scripts/breeze.debug.js:7918:21)
at proto._updateTargetFromRaw (http://localhost:54663/Scripts/breeze.debug.js:7891:9)
at updateEntity (http://localhost:54663/Scripts/breeze.debug.js:14782:9)
at mergeEntity (http://localhost:54663/Scripts/breeze.debug.js:14755:13)
有什么办法可以快速解决这个问题吗
更新:这是我在breeze.debug.js的第5083行提出的修复方案:
rawAccessorFn(newValue);
if (ko.isWriteableObservable(rawAccessorFn))
rawAccessorFn(newValue);
对此:
rawAccessorFn(newValue);
if (ko.isWriteableObservable(rawAccessorFn))
rawAccessorFn(newValue);
不确定此修复程序是否存在任何潜在问题,但它对我有效:)
更新2:修复程序现在位于breeze.debug.js v1.5.1中的第5167行
更新3:修复程序现在位于breeze.debug.js v1.5.2中的第5191行
我们可以在源代码中实现此修复吗?我们还没有更改breeze淘汰适配器已经有一段时间了。您以前运行的是哪个版本?那么tho是一个未映射的属性,是吗?它的价值是如何确定的?通过计算其他属性和数据,是吗 那么,是谁在试图设置该值呢?你还是微风?如果有微风,在什么情况下 我问所有这些问题是因为我并不清楚,默默地忽略设置RO属性的尝试比抛出要好。在我看来,柯在告诉你一些重要的事情 如果breeze在某个内部阶段设置了您无法触摸的属性(例如,在查询结果处理或实体导入期间),我会做出这样的更改 在jsfiddle或plunker上进行一次小的修改将非常有帮助
谢谢。我相信我们正在运行最新的1.4.x请向我们展示属性定义。它是您添加到实体中的客户端属性吗?它是服务器的只读属性吗?我这样问是因为我们试图了解它是如何成为KO计算属性的,以及为什么breeze负责对其进行写入。@Ward我们刚刚更新到新的1.5.1,并且已经加入并添加了上述修复(现在在第5167行)。为了回答您关于它如何进入其中的问题,我们使用metadataStore.registerEntityTypeCtor()Yes和Yes扩展实体添加的计算字段。这是实体的计算扩展,它使用实体上的属性来确定其值。我并不是在试图写我的计算机,而是在尝试写我的计算机(当初始化一个实体时),正如我在最初的文章中所描述的那样。breeze似乎没有考虑到在客户端用计算出的可观测值扩展实体的可能性。一旦我添加了这个“修复”,一切又好了:)