Knockout foreach 循环迭代相同的数据元素
Knockout foreach loop iterating same data element
我有一个包含 4 个元素的数组,并通过绑定传递给 foreach 循环。
<ul data-bind="foreach: relatives">
<li>
<span data-bind="text: First"></span>
<span data-bind="text: Last"></span>
<span>
<a href="#" class="tag-edit">Edit</a>
<a href="#" class="tag-delete">Delete</a>
</span>
</li>
</ul>
出于某种原因,我的输出在我的调试中给了我一个亲戚四次,我在我使可观察的数据数组中只有四个亲戚。我的 html 显示冗余条目。很明显,我的数组没有出错,它显然有 4 个元素,但 foreach 循环表现得很奇怪。
使用Knockout的Javascript:
var data = [
{ Id: 1, First: "John", Last: "Doe", Address: "76 Hero Ave" },
{ Id: 2, First: "Bill", Last: "Doe", Address: "467 Nantucket Rd" },
{ Id: 3, First: "Sue", Last: "Doe", Address: "467 Nantucket Rd" },
{ Id: 4, First: "Jane", Last: "Doe", Address: "76 Hero Ave" },
];
var viewModel = {
// data
relatives: ko.observableArray(data),
firstNameToAdd: ko.observable(""),
lastNameToAdd: ko.observable(""),
// behaviors
addRelative: function () {
this.relatives.push({ First: this.firstNameToAdd(), Last: this.lastNameToAdd() });
this.firstNameToAdd("");
this.lastNameToAdd("");
}
};
$(document).on("click", ".tag-delete", function () {
var itemToRemove = ko.dataFor(this);
viewModel.relatives.remove(itemToRemove);
});
ko.applyBindings(viewModel);
添加从 viewModel 代码块中单击删除后,我的列表将不再显示任何内容。我的调试显示我也没有数据并且没有显示。
试试这个:
视图
<ul data-bind="foreach: relatives">
<li>
<span data-bind="text: First"></span>
<span data-bind="text: Last"></span>
<span>
<a href="#" class="tag-edit">Edit</a>
<a href="#" data-bind="click: $parent.remove">Delete</a>
</span>
</li>
</ul>
爪哇语
var data = [
{ Id: 1, First: "John", Last: "Doe", Address: "76 Hero Ave" },
{ Id: 2, First: "Bill", Last: "Doe", Address: "467 Nantucket Rd" },
{ Id: 3, First: "Sue", Last: "Doe", Address: "467 Nantucket Rd" },
{ Id: 4, First: "Jane", Last: "Doe", Address: "76 Hero Ave" },
];
var viewModel = {
// data
relatives: ko.observableArray(data),
firstNameToAdd: ko.observable(""),
lastNameToAdd: ko.observable(""),
// behaviors
addRelative: function() {
this.relatives.push({
First: this.firstNameToAdd(),
Last: this.lastNameToAdd()
});
this.firstNameToAdd("");
this.lastNameToAdd("");
},
remove: function(item) {
viewModel.relatives.remove(item);
},
};
ko.applyBindings(viewModel);
相关文章:
- 基于数据元素限制动态表单字段
- 为什么DTM数据元素被调用两次
- 方法来使用jQuery选择匹配的数据元素
- 访问jQuery中的SVG数据元素
- Ajax 数据元素未拾取
- 从 json 字符串中提取数据元素
- Jquery验证插件,使用选项的数据元素作为验证检查
- 未捕获的异常:每个数据元素都必须实现一个唯一的“id”属性slick.dataview.js
- Knockout foreach 循环迭代相同的数据元素
- 从数据表重新加载 javascript 数据元素 asp.net 而不重新加载页面
- 如何从html中删除数据元素
- 使用jquery从HTML5数据元素中获取并执行函数+参数
- 按属性选择d3.js数据元素
- jQuery过滤器不返回数据元素,只返回整个对象
- 添加< >标记在选择的enter()部分的主数据元素之前
- 为数据元素设置一个变量
- 在javascript中转义数据元素中的撇号
- 如何访问CSV文件的数据元素
- 在adobedtm数据元素中寻找自定义脚本
- 问题更新Adobe分析变量通过数据元素在动态标签管理器- DTM