Pregunta

Para los propósitos de demostración, estoy escribiendo un proyecto de seguimiento de la aplicación. Los proyectos tienen tareas, personas, etc y cada uno han asociado propiedades como el título y la descripción.

He creado una lista de selección y esperaba que se rellenará con las propiedades del título de cada proyecto. En lugar de ello, se está rellena con el texto de una función. Asumo que es porque el título es un observable. Pero no sé cómo puedo pedir el valor ...

Aquí está el código HTML que no está poblando correctamente:

<select data-bind="options: projects, 
    optionsText: 'title', 
    optionsValue: 'id', 
    value: selectedList.id()">
</select>

Aquí está el javascript con el json incluido (se inyecta usando JSON.Net en ASP.Net MVC). El formato debe ser el mismo, aunque traté de desinfectar, así que disculpen los soportes que faltan.

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

EDIT:

El verde era correcta. El código está muy bien. Yo no había proporcionado suficiente información. Yo estaba usando Knockout 1.1.1 con el plugin mapeo 0.5. Esto es lo que causó el problema. Knockout se encuentra actualmente en v1.1.2. Cuando he actualizado a 1.1.2, funcionó. Buena verde captura. Debería haber comprobado en el violín primero.

Nota:. No se ve como existe en la actualidad ninguna documentación que indique el requisito de utilizar 1.1.2

¿Fue útil?

Solución

No veo el problema con el código. Los espectáculos de violín de la selección se rellena correctamente con el título del proyecto: http://jsfiddle.net/greenlaw110/Tkqqb/ 3 /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top