我正在尝试从列表中删除一个项目。我正在使用带有映射插件的 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>
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 对象。我不知道我得到了什么!