【发布时间】:2015-11-17 19:29:21
【问题描述】:
免责声明-我担心这个问题可能是重复的,因为功能看起来很基本,所以我知道我可能会得到一个欺骗。但我找不到有效的解决方案
所以我有一个可观察的数组设置如下
self.meetingAttendees = ko.observableArray([
{
AttendeeTypeId: ko.observable(1),
AttendeeNames: ko.observableArray([
{ Name: ko.observable("Nemo"), CurrentEdit: ko.observable(0) }
]),
AttendeeSiteNumber: ko.observable(""),
StudentNames: ko.observableArray([
{ Name: ko.observable("Flava Flave"), CurrentEdit: ko.observable(1) }
]),
Email: ko.observable(""),
Telephone: ko.observable("")
}]);
而我的“问题”HTML 是:
<tbody data-bind="foreach: $root.meetingAttendees">
<tr>
<td class="attendeeNameCol textAlignCenter">
<div class="textAlignCenter" data-bind="foreach:{data: AttendeeNames, as: 'Attendee'}">
<input class="formInput" data-bind="textInput: Attendee.Name()"/>
<span class="glyphicon glyphicon-remove nameRemove" data-bind="click:$root.removeName.bind($data,$index(),'AttendeeNames',$parentContext.$index())"></span>
</div>
<span data-bind="visible:$root.meetingAttendees()[$index()].AttendeeTypeId() == 1,click:$root.addName.bind($data,$index(),'AttendeeNames',$index())" class="addAnotherText">(+) Add Another Parent</span>
</td>
</tr>
</tbody>
一切似乎都工作正常,并且使用虚拟数据,它可以正确绑定。但是,当我将一个元素推入 AttendeeNames
self.meetingAttendees()[parentIndex].AttendeeNames().push(
{Name: ko.observable(""),CurrentEdit: ko.observable(1)}
);
我的视图没有插入另一个元素。我检查了数组,它确实显示了一个元素已被添加,所以我认为这是一个绑定问题。
我的问题是如何正确绑定,以便嵌套的 foreach 语句正确更新和显示嵌套 observableArrays 中的信息?
【问题讨论】:
标签: javascript knockout.js foreach