在下面的示例中,您将看到 doSomething 永远不会触发。如果您if: Comments
从模板绑定中删除 doSomething ,则会按预期触发。有谁知道这是怎么回事?data
使用模板绑定处理程序上的属性时也会发生这种情况。
我目前正在使用 Knockout 2.2.1。jsfiddle http://jsfiddle.net/YADzx/2/
<div data-bind="template: { if: Comments, name: 'comments' }"></div>
<script type="tmpl" id="comments">
<div data-bind="foreach: { data: Comments, afterAdd: $root.doSomething }">
<div data-bind="text: name"></div>
</div>
</script>
<script>
var vm = {
Comments: ko.observableArray([{name:'hey'}]),
doSomething: function (element, index, data) {
$(element).addClass('wow');
}
};
ko.applyBindings(vm);
vm.Comments.push({name:'foo'});
vm.Comments.push({name:'bar'});
</script>