Frage

Für Demozwecke, schreibe ich ein Projekt-Tracking-App. Projekte haben Aufgaben, Menschen, etc. und haben jeweils Eigenschaften wie Titel und eine Beschreibung zugeordnet ist.

Ich habe eine Auswahlliste und erwartet, dass es mit dem Titel Eigenschaften jedes Projekts gefüllt werden. Stattdessen ist es mit dem Text einer Funktion bevölkert wird. Ich nehme an, es ist, weil Titel ein beobachtbar ist. Aber ich weiß nicht, wie ich für den Wert fragen ...

Hier ist der HTML-Code, der nicht richtig bevölkern:

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

Hier ist das Javascript mit dem json enthalten (es injiziert ist mit JSON.Net in ASP.Net MVC). Das Format sollte gleich sein, obwohl ich versuchte, es zu sanieren, so entschuldigen Sie bitte die fehlenden Klammern.

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

Green hatte Recht. Der Code ist in Ordnung. Ich hatte nicht genug Informationen zur Verfügung gestellt. Ich war 0,5 Knockout 1.1.1 mit Mapping-Plugin. Dies ist, was das Problem verursacht hat. Knockout ist derzeit auf v1.1.2. Wenn ich auf 1.1.2 aktualisiert, es funktionierte. Guter Fang grün. Ich sollte es in Geige zuerst überprüft haben.

. Hinweis: Es sieht nicht wie es derzeit keine Dokumentation die Anforderung angibt 1.1.2 verwenden

War es hilfreich?

Lösung

I don't see the problem with the code. The fiddle shows the selection is correctly populated with project title: http://jsfiddle.net/greenlaw110/Tkqqb/3/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top