【问题标题】:Acessing parent observableArray from child observableArray从子可观察数组访问父可观察数组
【发布时间】:2015-08-11 08:52:31
【问题描述】:

我有一个 posts 的 observableArray。每个帖子都应该有其 observableArray of cmets,我正在这样做:

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

所以我有两个 foreach:

<!-- 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 -->

在我的视图模型中,deleteComment 函数:

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

这里的问题是我找不到从 cmets 数组中删除注释的方法。我无法从视图模型访问 cmets 数组,因为它是动态创建的。我试图在数据绑定中绑定父级:

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

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

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

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

    您的bind 更改了thisdeleteComment 函数中的内容,而不是第一个参数的内容。如果您不需要 this 来处理 deleteComment 中的其他内容,那么您可以使用 this.comments


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

    【讨论】:

    • 哦!没错,不理解绑定概念对我不利。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2019-02-25
    • 2020-12-01
    • 2019-06-04
    相关资源
    最近更新 更多