Полностью новый для нокаута, и я пытаюсь отобразить ответ JSON от сервера к конкретным моделям с использованием плагина отображения нокаута. Модели вложены, и я пытаюсь переопределить конструкцию объекта, используя обратный вызов create
даже во вложенных моделях. Тем не менее, похоже, что мои параметры отображения читаются правильно. Пример JSON:Как настроить создание сопоставления нокаутов в вложенной модели?
{
"EmployeeFeedbackRequestSubmissions": [
{
"EmployeeFeedbackRequestSubmissionId": 0,
"Employee": "John Smith0",
"EmployeesWorkedWith": [
{
"EmployeeName": "Joe Smith",
"ProjectsWorked": [
{
"ProjectName": "Document Management Console"
},
{
"ProjectName": "Performance Eval Automation"
},
{
"ProjectName": "Business Tax Extensions"
}
]
},
{
"EmployeeName": "Michael Jones",
"ProjectsWorked": [
{
"ProjectName": "Document Management Console"
},
{
"ProjectName": "Performance Eval Automation"
},
{
"ProjectName": "Business Tax Extensions"
}
]
},
{
"EmployeeName": "Jason Smith",
"ProjectsWorked": [
{
"ProjectName": "Document Management Console"
},
{
"ProjectName": "Performance Eval Automation"
},
{
"ProjectName": "Business Tax Extensions"
}
]
},
{
"EmployeeName": "Robert Will",
"ProjectsWorked": [
{
"ProjectName": "Document Management Console"
},
{
"ProjectName": "Performance Eval Automation"
},
{
"ProjectName": "Business Tax Extensions"
}
]
}
]
}
// more EmployeeFeedbackRequestSubmissions
]
}
Варианта Mapping:
var mappingOptions = {
// overriding default creation/initialization code
'EmployeeFeedbackRequestSubmissions': {
create: function (options) {
return (new(function() {
this.EmployeeHeading = ko.computed(function() {
return "Performance Evaluation Employee: " + this.Employee();
}, this);
ko.mapping.fromJS(options.data, {}, this);
})());
},
'EmployeesWorkedWith': {
create: function (options) {
return new instance.EmployeesWorkedWithModel(options.data);
}
}
}
};
Пример скрипка с полным, например: http://jsfiddle.net/jeades/9ejJq/2/
Результатом должен быть возможностью использовать вычисленный nameUpper
из EmployeesWorkedWithModel
. Я также открыт для предложений о лучшем способе сделать это, поскольку это может быть не лучший способ справиться с этим.
Спасибо за несколько примеров и объяснений! –
Джейсон, приветствую вас, спасибо за ваш комментарий, когда у вас появится возможность попробовать ответы, вы заметите, что с ответами beauXjames вы потеряете свои вычисленные, например. nameUpper и т. д., потому что в его примере фактически не выполняется сопоставление для уровня EmployeesWorkedWith ваших данных, это просто создание данных. Привет, Джон. –
Да, спасибо, что указали это. Моя основная проблема заключалась в попытке присоединить дополнительные вычислимые свойства и функции к вложенным моделям. В противном случае мне не потребовалось бы переопределять любую конструкцию объекта. Еще раз спасибо. –