2

SO で見つけたコードを使用しています (ここでの 2 番目の回答: knockout.js - deferred databinding for modal? )。

ただし、詳細はフォームに表示されません。

  rowClick: function(data){
    console.log("in row click");
    console.log(data); // produces data as per debug below
    // load the transaction when a row is clicked
    self.EditingTransaction(data);
    console.log(self.EditingTransaction()); // produces data as per debug below (not as a observable though)
  },

ビューコードは次のとおりです。

<div data-bind="modal: EditingTransaction" class="fade">
    <form data-bind="submit: $root.SaveTransaction">
    <div class="modal-header">
        <a class="close" data-dismiss="modal">×</a>
        <h3>
            Editing transaction</h3>
    </div>
    <div class="modal-body">
        <label>Date</label> <input type="text" data-bind="text: Date"/></br>
        <label>Category</label> <input type="text" data-bind="text: Category"/></br>
        <label>Subcategory</label> <input type="text" data-bind="text: Subcategory"/></br>
        <label>Amount</label> <input type="text" data-bind="text: Amount"/></br>
        <label>Notes</label> <input type="text" data-bind="text: Notes"/></br>
        <pre data-bind="text: ko.toJSON($root.EditingTransaction, null, 2)"></pre>

    </div>
    <div class="modal-footer">
         <a href="#" class="btn btn-primary" data-bind="click: $root.SaveTransaction">Save changes</a>
    </div>
    </form>
</div>

データが editTransaction に割り当てられると、ダイアログが表示されます - pre ko.toJSON デバッグ HTML はこれを表示します:

{
  "ID": "1231",
  "TransactionType": "Withdrawal",
  "Date": "2012-11-07",
  "Category": "cat",
  "Subcategory": "sub cat",
  "Amount": "-50.00",
  "currency": "GBP",
  "Notes": "",
  "AccountName": "Account 2",
  "Payee": "Cheque"
}

モーダルが初期化されたとき(ページがロードされたとき)にデータが利用できないというコメントを検索して見ましたが、それは私には意味がありません(ポイントバインディングは、ビューがデータのときに更新されると信じています変更され、デバッグステートメントも正常に機能しています)。バインディング コードで with を使用せずに、またデータ バインド テキストで $root への参照を使用してみました。

だから、それがうまくいかない理由は素晴らしいでしょう。

4

1 に答える 1

4

ピクニック :-)

入力タグのバインディングはテキストではなく値である必要があります...私はそれを1日オンとオフで見てきました-答えを投稿してから10分以内に私はヒットしました!

于 2012-12-05T13:07:29.533 に答える