knockout.js - 如何在点击事件中访问 observableArray?

标签 knockout.js knockout-2.0

我有一个项目,我无法弄清楚如何从容器模板调用的单击事件访问 observableArray。我在这里有一个 fiddle 中的精简示例:

http://jsfiddle.net/zBarW/26/

点击事件在模板中指定,然后从项目本身的属性动态加载每个项目的模板。

所以一个示例项目是:

{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/

相关文章:

javascript - 从 DOM 而不是从 ViewModel 更新 Knockout `attr` 绑定(bind)

javascript - 使用 KnockoutJS,如何指定要绑定(bind)的 ViewModel?

knockout.js - knockout - 在呈现最后一项后执行代码

c# - Knockout js , mvc 下拉默认值不选择

javascript - Uncaught ReferenceError : define is not defined typescript

javascript - 从 typescript 中的模块注册 Knockout.js 组件 View 模型

javascript - knockout js 可见数据绑定(bind)属性不显示结果

javascript - knockout 音频播放列表

binding - Knockoutjs 原生模板绑定(bind)和简单的字符串数组

javascript - 当用户使用键盘时,Knockout.js valueUpdate 不起作用