我有一个项目,我无法弄清楚如何从容器模板调用的单击事件访问 observableArray。我在这里有一个 fiddle 中的精简示例:
点击事件在模板中指定,然后从项目本身的属性动态加载每个项目的模板。
所以一个示例项目是:
{ID: 1, TemplateName: 'template1', Label: 'Name', Description: 'Your name'}
“父”模板如下所示:
<script type="text/html" id="tpl-placeholder">
<div class="entry" data-bind="click: $parent.RemoveEntry, attr: { id: ID}, template: {name: TemplateName }"></div>
</script>
动态加载的模板如下所示:
<script type="text/html" id="template1">
<h1 data-bind="text: Label"></h1>
<div data-bind="text: Description"></div>
</script>
在处理单击事件的方法中(在本例中为RemoveEntry),当尝试访问 observableArray(条目)时,我得到 null。
这是 View 模型:
var viewModel = {
Name: ko.observable("Entries"),
Entries: ko.observableArray( entries ),
RemoveEntry: function (entry) {
// how do I access the "Entries" list here - this.Entries returns null
$("#debug").text(this.Entries == null);
this.Entries.remove(entry);
}
};
我是一个出色的新手..有人可以告诉我我在这里做错了什么吗? 谢谢!
最佳答案
按照你的方式,你可以直接访问viewmodel.Entries...
但是,更典型的是,您会这样做:-
http://jsfiddle.net/keith_nicholas/RAMcc/
使用出色的 javascript hack
var self = this;
关于knockout.js - 如何在点击事件中访问 observableArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216435/