gpt4 book ai didi

javascript - knockout javascript foreach 绑定(bind)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:09:15 25 4
gpt4 key购买 nike

我试图让用户创建一个类型转换并向这个类型转换对象添加一组类别。我试图使用 knockout 的 foreach 绑定(bind)到类别数组,并让用户将新类别添加到转换中。我创建了一个 jsfiddle 来说明我在这里要解释的内容。
http://jsfiddle.net/msell/ueNg7/16/

当用户修改一个转换时,JSON 对象被正确构建,但我无法完全获得要显示的转换列表。

最佳答案

你有几个问题:

您正在使用 Knockout 1.2.1

foreach 绑定(bind)直到 Knockout 2.0 才被添加。

您没有使用observableArray

您需要将categories 属性修改为ko.observableArray(),而不仅仅是一个空数组。否则当你push给它时Knockout将无法观察到,remove方法将不存在。

您的this 绑定(bind)是错误的。

当从事件处理程序调用时,this 将被错误设置。您可以通过多种方式解决此问题,discussed in length in the Knockout documentation ,但一个简单的解决方法是更改​​对 viewModel 的引用,而不是对 this 的引用。


要解决所有这些问题,您应该升级到 Knockout 2.0,并将您的 View 模型声明更改为

var viewModel = {
name: ko.observable(''),
description: ko.observable(''),
categories: ko.observableArray(),
categoryToAdd: ko.observable(''),

removeCategory: function(category) {
viewModel.categories.remove(category);
},

addCategory: function() {
viewModel.categories.push(new Category(viewModel.categoryToAdd()));
viewModel.categoryToAdd('');
}
};

这是一个更正后的 JSFiddle:http://jsfiddle.net/ueNg7/19/

关于javascript - knockout javascript foreach 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10099657/

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