Question

Pour démonstration fins, je vous écris une application de suivi du projet. Les projets ont des tâches, les gens, etc. et chacun ont des propriétés associées comme titre et la description.

J'ai créé une liste de sélection et attendu à être rempli avec les propriétés du titre de chaque projet. , Il est au lieu d'être renseigné avec le texte d'une fonction. Je suppose que c'est parce que le titre est observable. Mais je ne sais pas comment je peux demander la valeur ...

Voici le code HTML qui ne sont pas correctement peuplait:

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

Voici le javascript avec le JSON inclus (il est injecté à l'aide JSON.Net dans ASP.Net MVC). Le format doit être le même, bien que j'ai essayé de le désinfecter, alors s'il vous plaît excuser les parenthèses manquantes.

<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 avait raison. Le code est très bien. Je ne l'avais pas fourni suffisamment d'informations. Je suis en utilisant Knockout 1.1.1 avec module de mappage 0,5. C'est ce qui a causé le problème. Knock-out est actuellement sur v1.1.2. Quand je suis passé à 1.1.2, cela a fonctionné. Bonne vert de capture. Je l'ai vérifié au violon d'abord.

Note:. Il ne ressemble pas à l'heure actuelle il n'y a aucun document indiquant l'obligation d'utiliser 1.1.2

Était-ce utile?

La solution

Je ne vois pas le problème avec le code. Les spectacles de violon la sélection est peuplé correctement avec le titre du projet: http://jsfiddle.net/greenlaw110/Tkqqb/ 3 /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top