我已经和Knockout合作了几天了。事情进展相对顺利,但我遇到了一个问题。我似乎无法在此处运行动画过渡。理想情况下,我希望能够淡出destroy事件中的奇异元素。我还希望能够在页面转换中为整个表格制作动画。我无法工作,因为元素总是“未定义”。
这是我的foreach bind:
<tbody data-bind='foreach: { data : $root.displayResults(startValue(), endValue()), beforeRemove: hideElement }'>
但是当调用该函数时,我得到一个未确定的jQuery错误
self.hideElement = function(elem) {
$(elem).hide(300)
}
看看this fiddle,让我知道你们的想法。
答案 0 :(得分:1)
您应该知道KO会根据您的模板多次调用beforeRemove
回调:在您的情况下,它将是文本节点,tr和另一个文本节点。
所以你需要过滤掉文本节点,只在elem.nodeType == 1
表示节点类型是一个元素时才进行隐藏:
self.hideElement = function(elem) {
if (elem.nodeType === 1)
$(elem).hide(300)
}
这是一个具有工作删除功能的JSFiddle
我还添加了一些日志记录,以查看beforeRemove
被调用的次数。
同样是Animated transitions example的hidePlanetElement
方法。