我试图允许用户创建一个铸造并向该铸造对象添加一组类别。我试图使用淘汰赛的 foreach 绑定到类别数组,并让用户向铸造添加新类别。我创建了一个 jsfiddle 来说明我在这里试图解释的内容。
http://jsfiddle.net/msell/ueNg7/16/ http://jsfiddle.net/msell/ueNg7/16/
当用户修改强制转换时,JSON 对象会正确构建,但我无法完全获取要显示的强制转换列表。
你有几个问题:
您正在使用淘汰赛 1.2.1
The foreach
直到 Knockout 2.0 才添加绑定。
您没有使用observableArray
您需要修改您的categories
财产成为ko.observableArray()
,而不仅仅是一个空数组。否则淘汰赛将无法观察到您push
对它,以及remove
方法将不存在。
Your this
绑定错误。
当从事件处理程序调用时,this
将被设置错误。您可以通过多种方式解决这个问题,Knockout 文档中详细讨论了 http://knockoutjs.com/documentation/click-binding.html,但一个简单的解决方法是将引用更改为viewModel
而不是this
.
要解决所有这些问题,您应该升级到 Knockout 2.0,并将视图模型声明更改为
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/ http://jsfiddle.net/ueNg7/19/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)