来自child observableArray的父级observableArray

时间:2015-05-28 17:37:56

标签: javascript knockout.js

我有posts的observableArray。每个帖子都应该有可观察的评论,这是我这样做的:

self.posts.subscribe(posts) {
 ko.utils.arrayForEach(posts, function(post) {
  post.comments = ko.observableArray()
 })
}

所以我有两个foreachs:

<!-- ko foreach: posts -->
 <div class="post">
 ...
  <!-- ko forech: comments -->
   <div class="comment">
    <span class="delete_comment" data-bind="click: $root.deleteComment"></span>
   </div>
 <!-- /ko -->
<!-- /ko -->

在我的viewmodel中,deleteComment函数:

self.deleteComment = function(comment) {
//ajax..
// now i should remove this comment from the comments array
}

这里的问题是我无法找到从comments数组中删除注释的方法。我无法从viewmodel访问comments数组,因为它是动态创建的。我试图在data-bind中绑定父:

<span class="delete_comment" data-bind="click: $root.deleteComment.bind($parent)"></span>

但是没有区别,deleteComment中的第一个参数仍然是评论对象。如何从deleteComment内部访问外部observableArray?

1 个答案:

答案 0 :(得分:0)

  

但是没有区别,deleteComment中的第一个参数仍然是注释对象。

您的dataGridView1.ClearSelection(); 更改了bind函数中this的内容,而不是第一个参数。如果deleteComment中的其他内容不需要this,那么您可以使用deleteComment

或者,当然,让帖子负责删除他们的评论,而不是根模型。