Domanda

Per demo fini, sto scrivendo un progetto di monitoraggio delle app. I progetti hanno compiti, persone, ecc e ciascuno hanno associato immobili come titolo e una descrizione.

Ho creato un elenco di selezione e aspettavo di essere popolato con le proprietà del titolo di ogni progetto. Invece, è in fase di popolato con il testo di una funzione. Suppongo che sia perché il titolo è un osservabile. Ma io non so come posso chiedere per il valore ...

Ecco il codice HTML che non è popolando correttamente:

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

Ecco il JavaScript con il JSON incluso (è iniettato usando JSON.Net in ASP.Net MVC). Il formato dovrebbe essere la stessa, anche se ho cercato di disinfettare, quindi vi prego di scusare eventuali staffe mancanti.

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

Modifica

Green aveva ragione. Il codice va bene. Non avevo fornito informazioni sufficienti. Ero con Knockout 1.1.1 con la mappatura plug-in 0.5. Questo è ciò che ha causato il problema. Knockout è attualmente in v1.1.2. Quando ho aggiornato a 1.1.2, ha funzionato. Buona verde cattura. Avrei dovuto controllare in primo violino.

. Nota: Non fa apparire come non esiste attualmente alcuna documentazione che attesti l'obbligo di utilizzare 1.1.2

È stato utile?

Soluzione

Non vedo il problema con il codice. Gli spettacoli violino la selezione venga correttamente compilato con il titolo del progetto: http://jsfiddle.net/greenlaw110/Tkqqb/ 3 /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top