Я пытаюсь получить выпадающее меню, которое работает на странице со столом, используя привязки нокаута. Мне удалось получить и выпадающее меню, и таблицу, работающую правильно, когда есть только один на странице, и я не использую параметры отображения в плагине привязки нокаута.Привязка не работает при использовании ko.mapping с 2-мя моделями
Однако, когда я использую параметры сопоставления, выпадающий список или таблица работают некорректно. Я не смог найти что-либо в Интернете, которое помогает решить эту проблему.
Я создал jsFiddle здесь для получения дополнительной информации:
HTML, заключается в следующем:
<table class="table table-striped table-bordered table-curved">
<tr>
<th>Name</th>
<th>Team</th>
</tr>
<!-- ko foreach: History -->
<tr>
<td data-bind="text: Name"></td>
<td data-bind="text: Team1"></td>
</tr>
<!-- /ko -->
</table>
и JS является:
$(function() {
var reasons = [
{ Id: 1, Reason: "Late", SafeName: "late" },
{ Id: 2, Reason: "Road Works", SafeName: "road_works" },
{ Id: 3, Reason: "Later", SafeName: "later" },
]
var history = [
{ Name: "John", Team: "Team1" },
{ Name: "Peter", Team: "Team1" },
{ Name: "Simon", Team: "Team2" }
]
function GetData(){
return [history, reasons];
}
function ReasonModel(data, parent) {
var self = this;
ko.mapping.fromJS(data, {}, parent.Reasons)
}
function DelayModel(data, parent) {
var self = this;
ko.mapping.fromJS(data, {}, parent.History)
}
function ViewModel() {
var self = this;
var mapping = {
reasons: {
create: function (options) {
return new ReasonModel(options.data, self);
}
},
history: {
create: function (options) {
return new DelayModel(options.data, self);
}
},
}
self.History = ko.observableArray([]);
self.Reasons = ko.observableArray([]);
self.SelectedReason = ko.observable();
self.GetHistory = function(){
GetData().done(function(result){
ko.mapping.fromJS(result, mapping, self);
})
}
}
var vm = new ViewModel();
ko.applyBindings(vm);
vm.GetHistory();
});
http://jsfiddle.net/372221/vg6kf3pw/14/
Может кто-нибудь поможет мне исправить это?
@ ZoltánTamási Appologies. Я сделал опечатку там, где я исправил ее, чтобы использовать '
Я думаю, что ваша проблема может заключаться в том, что вы возвращаете массив в метод GetData, а не в объект. вы должны возвратить '{причины: причины, история: история}' вместо '[причины, история]'. –