gpt4 book ai didi

javascript - KnockoutJS 从可观察数组中删除项目。 Item是ul里面的listitem,是foreach生成的

转载 作者:可可西里 更新时间:2023-11-01 01:50:53 25 4
gpt4 key购买 nike

如何使用 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>

最佳答案

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

有很多方法可以确保 removeExpertise 被调用并为 this 设置适当的值。一种简单的方法是使用 .bind

它看起来像:

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

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

关于javascript - KnockoutJS 从可观察数组中删除项目。 Item是ul里面的listitem,是foreach生成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10252749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com