1

目標

KnockoutJS の送信バインディングでオブジェクトを取得します。

問題

フォームを送信するときに、要素ではなくオブジェクトを取得する必要があります。

ここで、 jsFiddleでコンソールを開き、いくつかの項目をクリックしadd buttonます。あなたはProducts object、ここですべてが正しいです。しかし、ここでも jsFiddleで、クリックするとadd button、応答はオブジェクトではなく要素になります。オブジェクトが必要です。

コードの違い

追加するときにこの関数を見てください:

self.add = function (item) {
    var i = self.products.indexOf(item);
    self.products()[i].isAdded(true);
};

ただし、バインディングが のsubmit場合、itemパラメーターはバインディングが返す応答とは異なりclickます。

私のシナリオ

私の実際のアプリケーションでは、このようなViewModel が 2 つあります。もっと簡単かと思ったのですが、残念ながらそうではありません。

誰かが何か考えがありますか?

4

1 に答える 1

2

$data送信時に関数を呼び出すときに、オブジェクトを渡す必要があります。それ以外の場合は、フォーム オブジェクトが自動的に渡されます。

例えば:

  <!-- ko ifnot:isAdded -->
  <form data-bind="submit: function() { $parent.add($data); }">
  <button data-bind="ifnot:isAdded" class="btn btn-small action add">
      <i class="icon-plus">Add</i>
  </button>
  </form>
  <!-- /ko -->

フィドルの作業中の更新は次のとおりです: http://jsfiddle.net/G8zPT/4/

于 2013-07-09T13:32:01.120 に答える