2

次のようなビューモデルをセットアップしました。

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 へのマッピングは明らかに関数です...なぜエラーが発生するのでしょうか?

4

1 に答える 1

4

submitバインディングを行っているときは、適切なスコープにいることを確認します。

取得しているエラーは、 にプロパティ$parentがない場合に表示されるものです ( を入力した場合など)。voteOnItem$parent.blah

確認する簡単な方法は<div data-bind="text: ko.toJSON($parent)"></div>、バインディングの近くに配置して、そのレベルのデータを確認することです。

もう 1 つ確認すべきことは、すべてのタグが閉じられており、 のような不適切な自己終了タグを使用していないこと<span />です。

于 2012-05-10T02:38:24.527 に答える