以下の例では、doSomething が起動しないことがわかります。テンプレート バインディングからを削除するif: Comments
と、doSomething が期待どおりに起動します。これを引き起こすために何が起こっているのか誰にも分かりますか?これはdata
、テンプレート バインディング ハンドラで属性を使用しているときにも発生します。
現在、ノックアウト 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>