我很难在嵌套的observableArray (timeSlots)中映射数据。当我填写我的参与者observableArray时,它工作得很好。我打赌当它被嵌套时我必须做一些特别的事情。
我是新来的诺克,所以不知道我做错了什么。我一直在查看这些文档,但都没有用,尤其是:
http://knockoutjs.com/documentation/plugins-mapping.html
这里是我的代码:(编辑)
<script type="text/javascript">
var TimeSlot = function (startTime, endTime) {
var self = this;
self.startTime = startTime;
self.endTime = endTime;
};
var Participant = function (id, timeSlots) {
var self = this;
self.Name = id;
self.roomName = ko.observable();
self.timeSlots = ko.observableArray();
var timeSlotVMs = _.map(timeSlots, function(ts) {
return new TimeSlot(ts.startTime, ts.endTime);
});
ko.utils.arrayPushAll(self.timeSlots(), timeSlotVMs);
};
function ViewModel() {
var self = this;
self.participants = ko.observableArray([]);
self.addPerson = function () {
var data = '{"TimeSlot":[{"startTime":"05:23","endTime":"06:32"},
{"startTime":"10:23","endTime":"11:32"}]}';
var partViewModel = new Participant(self.selectedValue().Id(), data.TimeSlot);
self.participants.push();
};
};
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
</script>如果需要的话,和
<tbody data-bind="foreach: viewModel.participants">
<tr>
<td data-bind="text: Name"></td>
<td data-bind="text: roomName"></td>
<td data-bind="foreach: viewModel.participants.timeSlots">
<span data-bind="text: startTime"></span>
</td>
</tr>
</tbody>发布于 2013-11-07 04:36:51
试试这个:
var TimeSlot = function (startTime, endTime) {
var self = this;
self.startTime = startTime;
self.endTime = endTime;
};
var Participant = function (id, timeSlots) {
var self = this;
self.Name = id;
self.roomName = ko.observable();
self.timeSlots = ko.observableArray();
var timeSlotVMs = _.map(timeSlots, function(ts) {
return new TimeSlot(ts.startTime, ts.endTime);
});
ko.utils.arrayPushAll(self.timeSlots(), timeSlotVMs);
};
function ViewModel() {
var self = this;
self.participants = ko.observableArray();
self.addPerson = function () {
var data = {
TimeSlot: [
{startTime:"05:23",endTime:"06:32"},
{startTime:"10:23",endTime:"11:32"}
]
};
var partViewModel = new Participant(123, data.TimeSlot);
self.participants.push(partViewModel);
};
};I使用 房客 库函数“map”创建视图模型数组.
此外,您的布局也有错误。使用timeSlots而不是viewModel.participants.timeSlots:
<tbody data-bind="foreach: participants">
<tr>
<td data-bind="text: Name"></td>
<td data-bind="text: roomName"></td>
<td data-bind="foreach: timeSlots">
<span data-bind="text: startTime"></span>
</td>
</tr>
</tbody>https://stackoverflow.com/questions/19825750
复制相似问题