使用Knockout.js 3.2.0的strage行为,shift是未定义的

时间:2014-11-09 09:38:17

标签: javascript jquery arrays knockout.js

这是一个真正的拔毛者。 我将一些div移动到模板中而没有改变任何ko的datacontext,突然之间我有了可怕的" undefined不是一个函数"在模板中。

事实证明,这不是一个与缺失的观察者相关的东西,而是一些内在的东西:

shift is undefined

看起来continuousNodeArray不是一个普通的数组,但它是一个jQuery对象数组(我假设只在这个特定的实例中,因为我相信应该是一个普通的数组)

Array of jQuery objects

所以我很想知道这是否是一个Knockout.js错误或我的模板中触发此行为的内容。我通过添加以下内容解决了这个问题:

jQuery.fn.shift = [].shift;

但我确定一定有其他事情要发生。任何线索?

1 个答案:

答案 0 :(得分:3)

当您使用jquery.tmpl作为模板引擎时,这是已知的,而不是最近(10月8日)修复了错误

请参阅github:Fix error in fixUpContinuousNodeArray when using jquery.tmpl

因此,如果您检查latest source,您现在会看到使用的是splice而不是shift

enter image description here

但是它不包含在最新版本(3.2.0)中,所以你应该坚持使用你的解决方法,直到出现新版本。