KnockoutJS从可观察数组中删除项目.Item 是 ul 中的列表项,由 foreach 生成

KnockoutJS remove item from observable array. Item is listitem within ul, which was generated by foreach

本文关键字:列表 生成 foreach ul 观察 数组 Item 删除项目 KnockoutJS      更新时间:2023-09-26

使用 KnockoutJS,如何从可观察数组中删除项目?我希望能够单击列表项,并从数组(从而删除列表)中删除该项。

下面的代码示例报告:"this.expertise is undefined"。

我是否需要定义某种专业知识对象,然后从其中调用它?

<ul data-bind="foreach: expertise">
    <li data-bind="text: Key, click: $parent.removeExpertise"></li>
</ul>
<script type="text/javascript">
    $(function () {
        function AppViewModel() {
            this.removeExpertise = function (expertise) {
                this.expertise.remove(expertise);
            };
            this.expertise = ko.observable([
                { Key: 'Charles', Value: 'Charlesforth' },
                { Key: 'Denise', Value: 'Dentiste' }
            ]);
        }
        // Activates knockout.js
        jQuery(document).ready(function () {
            ko.applyBindings(new AppViewModel());
        });
    });
</script>

当您从子项调用方法时,this将设置为子项而不是$parent

有许多方法可以确保使用适当的this值调用removeExpertise。 一个简单的方法是使用 .bind .

它看起来像:

this.removeExpertise = function (expertise) {
    this.expertise.remove(expertise);
}.bind(this);

此外,你会希望expertise是一个observableArray而不是一个observable,因为observableArray公开了数组操作方法,包括一个remove函数。