我正在尝试使用 knockoutjs foreach 绑定指定对插入的元素的入口效果。非常简单的设置:
myViewModel.myObservableArray.push({enter:function() { ... });
并在标记中:
foreach:{data:myObservableArray, afterRender:enter}
似乎它应该工作......对吧?但它没有在项目上找到输入功能。我发现确实有效的是:
myViewModel.enter = function(something, item) { item.enter(); };
foreach:{data:myObservableArray, afterRender:$root.enter}
将 enter 函数添加到根视图模型并绑定afterRender
到 $root.enter。然后 Enter 将项目作为其第二个参数传递,因此可以反过来调用项目的 enter 函数,但感觉就像一个 hack。
谁能解释这里发生了什么?
谢谢。
编辑:
为了澄清我已经创建了一个fiddle。
这样做非常简单,在动画过渡示例中有更深入的介绍。它在根视图模型中为使用 foreach 绑定插入的每个 dom 元素运行一个函数。
所以问题是:如果我想要特定于项目的 afterRender、afterAdd 或 beforeRemove 函数怎么办?我可以看到这很有用。特别是如果使用模板绑定来动态选择模板(注 4)。有没有一种干净的方法可以做到这一点?现在我enter
在视图模型的根目录中有一个函数,它只是调用enter
项目上的函数,但就像我上面所说的那样,这感觉就像一个 hack。