可能的错误:Breeze.js 1.5 - 除非指定'write'选项,否则无法将值写入ko.computed

时间:2014-10-15 22:55:06

标签: 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/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);

不确定此修复程序是否存在任何潜在问题,但它对我有用:)

更新2:修复现在在breeze.debug.js v1.5.1的第5167行

更新3:修复现在在breeze.debug.js v1.5.2第5191行

我们可以在源中实现这个FIX吗?

2 个答案:

答案 0 :(得分:1)

我们还没有改变微风敲门适配器已经有一段时间了。你之前在运行什么版本?

答案 1 :(得分:1)

所以这是一个未映射的属性,是吗?它的价值决定如何?通过从其他属性和数据计算,是吗?

那么谁试图设定价值?你还是微风?如果是Breeze,在什么情况下?

我问所有这些问题,因为对我而言,默默地忽略试图设置RO属性比抛出更好是不明显的。在我看来,Ko告诉你一些重要的事情。

如果breeze在某些你无法触及的内部阶段设置属性(例如在查询结果处理或实体导入期间),我会做出这样的改变。

jsfiddle或plunker上的一个小副本真的会有所帮助。

感谢。