$parent.inState不是Knockout JS的函数错误



我正在使用一个命名模板,并将一个数据列表绑定到该模板。绑定工作得很好,但我在$parent.inState()调用中得到了错误。查看下面的示例:

<div data-bind="template: { name: 'peopleScript', data: people }"> </div>
<script id="peopleScript" type="text/html">
    <ul data-bind="foreach: people">
        <li>
            Name: <span data-bind="text: name"> </span>
            State: <span data-bind="{ text: state, css: { outOfState: !$parent.inState($data) } }"> </span>
            <span data-bind="visible: ($parent.inState($data))">
                In State
            <span>
            <a href="#" data-bind="click: $parent.removePerson">Remove</a>
        </li>
    </ul>
    <button data-bind="click: addPerson">Add</button>
</script>

它说CCD_ 1不是一个函数。我也试过$parents,但没有用。我知道应用绑定的代码是有效的;如果我只是内联模板,它工作得很好。我也知道其他一切都设置正常,它可以很好地访问该方法。因此,由于某种原因,它在State中找不到。

有什么想法吗?

谢谢。

当您将data作为人员传递时,您会希望$data上的foreach(除非您的结构真的是people.people

你可以做:

<div>
  <ul data-bind="template: { name: 'peopleScript', foreach: people }"></ul>
</div>

只需在模板中有li,或者根据您当前的结构,在$data上执行foreach

$parent.inState0的问题是template创建了一个作用域,然后foreach绑定创建了另一个。所以,当你在里面的时候,你必须去两个瞄准镜。您可以使用$parents[1]来完成此操作,例如:http://jsfiddle.net/rniemeyer/RNWML/或者如果它真的处于顶级,那么使用$root是最简单的选择,比如:http://jsfiddle.net/rniemeyer/RNWML/2/

最新更新