リストからアイテムを削除しようとしています。マッピングプラグインでノックアウト.jsを使用しています。私のコードは次のようになります。
Jsonにシリアライズ
@{ var jsonData = new HtmlString(new JavaScriptSerializer().Serialize(Model));}
テンプレート
<script type="text/html" id="imgsList">
{{each model.Imgs}}
<div style="float:left; margin: 10px 10px 10px 0;">
<div><a href="${Filename}"><img src="${Filename}" style="width:100px;"></img></a></div>
<div data-bind="click: deleteImage">Delete</div>
</div>
{{/each}}
</script>
KO JavaScript
<script type="text/javascript">
$(function() {
//KO Setup
var viewModel = {
"model": ko.mapping.fromJS(@jsonData),
"deleteImage" : function(item) {alert(item.Filename + ' deleted.');}
}
ko.applyBindings(viewModel);
});
</script>
HTML
<div data-bind="template: 'imgsList'"></div>
質問
すべてが期待どおりに機能します。ただし、ボタン項目をクリックすると、画像のリストが削除ボタンとともに表示されます。ファイル名は未定義です。考え?
編集: KNockout.js マニュアルから引用: 「ハンドラーを呼び出すと、Knockout は現在のモデル値を最初のパラメーターとして提供します。これは、コレクション内の各アイテムの UI をレンダリングしている場合に特に役立ちます。どのアイテムの UI がクリックされたかがわかります。」
私が期待している Img オブジェクトを取得していないようです。何が返ってくるかわからない!