ノックアウト マッピング オブジェクトに操作を追加するのに苦労しています。
これが私が今いるところです-そして私はKnockout: Mapping API informationに従おうとしています。
これは最初の HTML です。
<a href="#" id="AddContact" class="add-button" type="button" data-bind="click: addContact">+ Add Contact</a>
<div id="ContactList">
<table>
<thead>
<tr>
<th>ID</th><th>Name</th><th></th>
</tr>
</thead>
<tbody data-bind="foreach: $root">
<tr>
<td data-bind="text: ContactID"></td>
<td data-bind="text: DisplayName"></td>
<td></td>
</tr>
</tbody>
</table>
</div>
そして、これは Knockout を接続するための私の最初の試みです:
var baseModel = {
addContact: function() {
alert('Woo!');
}
};
contacts = ko.mapping.fromJS('[{"ContactID":6,"DisplayName":"Doe, John"},{"ContactID":7,"DisplayName":"Rogers, Mister"}]', { }, baseModel);
ko.applyBindings(contacts);
ここで、追加の引数 ({} とbaseModel
) を から削除するとko.mapping.fromJS
、すべてのデータがテーブルに正しく表示されます。ただし(そして予想どおり)、「連絡先を追加」リンクでバインドエラーが発生します。もう一度追加するbaseModel
と、[連絡先を追加] リンクをクリックしても機能しますが、データが表示されません。なんらかの方法でエラーが発生しないので、そこで何が起こっているのか少し困惑しています。
私はKOが初めてなので、かなり単純なものが欠けているように感じます. StackOverflow 全体を検索しましたが、現時点ではコードをプラグインして何が機能するかを確認しているだけで、ここで何が起こっているのか実際には理解していません。誰かが追加の説明を提供して、正しい方向に向けることができますか? ありがとう。