Javascript 敲除JS错误:";提交绑定的值必须是函数";

Javascript 敲除JS错误:";提交绑定的值必须是函数";,javascript,mvvm,knockout.js,knockout-2.0,Javascript,Mvvm,Knockout.js,Knockout 2.0,我已设置如下视图模型: function viewModel() { var self = this; self.voteOnItem = function (sender, e) { .. } . . } var model = new viewModel(); ko.applyBindings(model); 在我看来,我在一个模板中包含以下内容: <script type="text/html" id="X"> <ul id=""

我已设置如下视图模型:

function viewModel() {
    var self = this;
    self.voteOnItem = function (sender, e) { .. }

    .
    .
}

var model = new viewModel();
ko.applyBindings(model);
在我看来,我在一个模板中包含以下内容:

<script type="text/html" id="X">
  <ul id="" data-bind="foreach:items">
 <li>
    <div style="float:left;">
           <form action='Url' method="post" data-bind="submit:$parent.voteOnItem">
      .
      .

  • . .

我得到一个错误“提交绑定的值必须是一个函数”,用于映射到voteOnItem,但voteOnItem显然是一个函数。。。知道为什么会出现错误吗?

我会确保在执行
submit
绑定时,您处于正确的范围内

$parent
没有
voteOnItem
属性时(例如,如果您将
$parent.blah
),您将看到所得到的错误

一种简单的查看方法是在绑定附近放置一个
,以查看该级别的数据


要验证的另一件事是,您已经关闭了所有标记,并且没有使用任何错误的自动关闭标记,如

我将确保您在执行
提交
绑定时处于正确的范围内

$parent
没有
voteOnItem
属性时(例如,如果您将
$parent.blah
),您将看到所得到的错误

一种简单的查看方法是在绑定附近放置一个
,以查看该级别的数据


要验证的另一件事是,您已经关闭了所有标记,并且没有使用任何错误的自动关闭标记,如

,我将确保您在执行提交绑定时处于正确的范围内。当
$parent
没有
voteOnItem
属性时(例如,如果您将
$parent.blah
),您将看到所得到的错误。一种简单的查看方法是在绑定附近放置一个
,以查看该级别的数据。要验证的另一件事是,您已经关闭了所有标记,并且没有使用任何错误的自动关闭标记,如
,我将尝试JSON技巧。。。谢谢。@RPNiemeyer就是这样,非常感谢!如果你愿意,把你的答案复制到一个帖子上,我会把它标记为答案。我会确保你在提交绑定时在正确的范围内。当
$parent
没有
voteOnItem
属性时(例如,如果您将
$parent.blah
),您将看到所得到的错误。一种简单的查看方法是在绑定附近放置一个
,以查看该级别的数据。要验证的另一件事是,您已经关闭了所有标记,并且没有使用任何错误的自动关闭标记,如
,我将尝试JSON技巧。。。谢谢。@RPNiemeyer就是这样,非常感谢!如果您愿意,请将您的答案复制到帖子,我将其标记为答案。要添加,在我的上下文中,我必须使用$root才能进入更高的范围。要添加,在我的上下文中,我必须使用$root才能进入更高的范围。