Картирование нокаута не дает мне доступа к свойствам
-
10-10-2019 - |
Вопрос
Для демонстрационных целей я пишу приложение для отслеживания проекта. Проекты имеют задачи, люди и т. Д., И каждый обладает ассоциированными свойствами, такими как заголовок и описание.
Я создал список избранных и ожидал, что он будет заполнен свойствами заголовка каждого проекта. Вместо этого он заполняется текстом функции. Я предполагаю, что это потому, что название наблюдается. Но я не знаю, как я могу попросить о ценности ...
Вот HTML, который не заполняется правильно:
<select data-bind="options: projects,
optionsText: 'title',
optionsValue: 'id',
value: selectedList.id()">
</select>
Вот JavaScript с включенным JSON (он вводится с использованием json.net в ASP.NET MVC). Формат должен быть таким же, хотя я пытался дезинфицировать его, поэтому, пожалуйста, извините за любые пропущенные скобки.
<script type="text/javascript">
var initialData = [
{
"id": "2150980c-1033-4b20-a58b-9e5400abb651",
"title": "project1",
"description": "project 1 description",
"persons": [
{
"id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
"firstname": "p1_fname"
},
{
"id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
"firstname": "p1_fname"
}],
"tasks": [
{
"id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
"title": "task1"
},
{
"id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
"title": "task2"
}]
},
{
"id": "54d4dc7c-0928-4c05-93a2-9e5400abb6a0",
"title": "project2",
"description": "project 2 description",
"persons": [
{
"id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
"firstname": "p1_fname"
},
{
"id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
"firstname": "p1_fname"
}],
"tasks": []
}
];
var viewModel = {
projects: ko.mapping.fromJS(initialData)
};
viewModel.selectedList = {
id: ko.observable("")
};
if(viewModel.projects().length > 0)
viewModel.selectedList.id(viewModel.projects()[0].id());
ko.applyBindings(viewModel);
</script>
РЕДАКТИРОВАТЬ:
Зеленый был прав. Код в порядке. Я не предоставил достаточно информации. Я использовал нокаут 1.1.1 с плагином отображения 0,5. Это то, что вызвало проблему. Нокаут в настоящее время находится на v1.1.2. Когда я обновился до 1.1.2, это сработало. Хороший пойман зеленый. Сначала я должен был проверить это в скрипке.
Примечание. В настоящее время не похоже, что в настоящее время есть какая -либо документация, указывающая требование использования 1.1.2.
Решение
Я не вижу проблемы с кодом. Скрипление показывает, что выбор правильно заполнен названием проекта: http://jsfiddle.net/greenlaw110/tkqqb/3/