Я пытаюсь удалить элемент из списка. Я использую Knockout.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>
К.О. 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 предоставит текущее значение модели в качестве первого параметра. Это особенно полезно, если вы визуализируете некоторый пользовательский интерфейс для каждого элемента в коллекции, и вам нужно узнать, какой элемент пользовательского интерфейса был нажат».
Похоже, я не получаю ожидаемый объект Img. Я не знаю, что я получаю обратно!