2017-02-09 63 views
3

我正在一个相当大的项目中使用KnockoutJS(因为在这里将不可能发布所有相关的代码),所以今天我从Knockout 3.4升级。 0至3.4.1。完成此操作后,我突然在每个页面负载上出现多个绑定错误(“您无法将绑定多次应用于同一元素”)。Knockout.js 3.4.1抛出多个绑定错误

我一直在使用Knockout一段时间,我非常有信心,我绝不会将绑定多次应用于同一元素。我只调用一次applybindings,并且我已经确认这个语句也只能运行一次,通过调试该代码(以及搜索此函数的任何其他实例)。

在为我调试这个问题之后,我决定再次降级到Knockout 3.4.0。事实证明,这个错误只是在最新版本3.4.1上显示出来的。

其他人注意到了这种行为?他们改变了什么导致了这个?

即使当我运行KO的调试版时,错误也不能告诉我它指的是什么元素,这使得找出错误实际来自哪里是无望的。

我也是不是使用第二个可选参数时,调用applybindings(没有特定的元素目标),因为我只做一次。

+0

您是否需要*更新至最新版本? –

+1

在发行说明中看不到任何相关内容(https://github.com/knockout/knockout/releases/tag/v3.4.1)您确定无法以简化示例重现问题吗?它可能与'with'绑定的变化有关吗? https://github.com/knockout/knockout/pull/1415 – user3297291

+1

是的,请尝试在最小的示例中重现错误 – WillardSolutions

回答

1

问题发生5个月后,某人在Github page上提出了同样的问题。它已修复here

布赖恩·亨特中号的(股东之一)的评论:

问题是,valueAccessor()需要被调用(如果它是一个函数)来创建的依赖。我相信我在TKO中有正确的修复方法(在渲染循环中基本上是if (typeof valueAccessor() === 'function') {valueAccessor()()}),但由于TKO修补程序使用新的绑定类风格,所以不会直接进行回移/翻译。