【问题标题】:Knockout JS Error: "The value for a submit binding must be a function"淘汰赛 JS 错误:“提交绑定的值必须是函数”
【发布时间】:2012-05-18 14:02:52
【问题描述】:

我已经设置了一个这样的视图模型:

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 显然是一个函数...知道为什么会出现错误吗?

【问题讨论】:

  • 我会确保您在进行提交绑定时处于正确的范围内。你得到的错误是当$parent 没有voteOnItem 属性时你会看到的(就像你放$parent.blah 一样)。一个简单的查看方法是在您的绑定附近放置一个&lt;div data-bind="text: ko.toJSON($parent)"&gt;&lt;/div&gt; 以查看该级别的数据。要验证的另一件事是您已关闭所有标签并且没有使用任何错误的自关闭标签,例如&lt;span /&gt;
  • 我会尝试 JSON 技巧...谢谢。
  • @RPNiemeyer 就是这样,非常感谢!如果需要,请将您的答案复制到帖子中,我将其标记为答案。

标签: javascript mvvm knockout.js knockout-2.0


【解决方案1】:

当您进行submit 绑定时,我会确保您处于正确的范围内。

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

一个简单的查看方法是在绑定附近放置一个&lt;div data-bind="text: ko.toJSON($parent)"&gt;&lt;/div&gt; 以查看该级别的数据。

要验证的另一件事是您已关闭所有标签并且没有使用任何不良的自关闭标签,例如&lt;span /&gt;

【讨论】:

  • 添加,在我的上下文中,我必须使用 $root 才能达到更高的范围。
猜你喜欢
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多