Knockout.Js 中的多个 afterAdd 调用

Posted

技术标签:

【中文标题】Knockout.Js 中的多个 afterAdd 调用【英文标题】:Multiple afterAdd calls in Knockout.Js 【发布时间】:2019-07-15 19:41:24 【问题描述】:

我最近开始使用 Knockout.js 库。我有一个项目网格,我正在尝试在 foreach 中使用 afterAdd 属性。问题是它调用了 afterAdd 处理程序 3 次而不是 1 次。是有什么问题或者是 knockout.js 的正确行为(为什么?)

Console.log image

这是 html 代码 sn-p

<tbody id="body_table" data-bind='foreach:  data: items, afterAdd: addSelect2'>

这是淘汰视图模型代码 sn-p

self.addSelect2 = function(element, index, data) 
    console.log(element);

【问题讨论】:

【参考方案1】:

是的,这是预期的行为,因为它是为项目中的每个新元素调用的。文档指出 afterAdd 专门用于“触发与列表更改相关的动画”,并且“仅在将新条目添加到数组时调用”。

阅读更多here。

似乎您需要为您的要求创建自定义绑定。

【讨论】:

是的,但我只添加了 1 个项目,为什么我看到 3 个 console.logs 而不仅仅是 1 个?

以上是关于Knockout.Js 中的多个 afterAdd 调用的主要内容,如果未能解决你的问题,请参考以下文章

knockout.js 中的多个过滤器

将多个输入绑定到可观察数组中的同一变量(Knockout.JS)

Knockout JS中的多个依赖选择

多个布尔值上的 Knockout.js“如果绑定”

Knockout.js 文本绑定 - 折叠多个空格

如何使用 Knockout.js 将多个 View 绑定到单个 ViewModel