Картирование нокаута не дает мне доступа к свойствам

StackOverflow https://stackoverflow.com/questions/4681834

  •  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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top