KnockoutJS Liaison Problème, Impossible de lire la propriété

J'ai ce qui est probablement un simple knock-out, mais je suis un débutant complet. J'ai été jeté sur cette page de code que quelqu'un d'autre a travaillé sur mais jamais fini.

Lorsque cette page se charge tout d'abord, les données sont extraites et la grille principale charge correctement. Le problème vient quand je tente de l'auto-sélectionner le premier enregistrement dans les résultats de sorte qu'une liste détaillée est complété en dessous de la grille.

Quand cela arrive, je reçois le message suivant.

Uncaught TypeError: Impossible de traiter de liaison "text: function (){return sélectionné.RequestLog.Timestamp }" , Message: Impossible de lire la propriété 'Timestamp' undefined

Voici les extraits de code avec lequel je travaille. Les données de retour est à partir d'Entity Framework.

var siteLogModel = function () {
            var self = this;

            self.errorList = ko.observableArray([]);
            self.selected = ko.observable();

            self.updateErrorList = function (page) {
                jQuery.ajax({
                    type: "POST",
                    url: "/Admin/ErrorPage",
                    data: { pageNum: page },
                    success: function (result) {
                        self.errorList(result);
                        self.selected(result[0]);

                        //Since we have success, add the click handler so we can get the details about a row by id.
                        //addRowHandlers();
                    },
                    error: function (result) {
                        jQuery("#status").text = result;
                    }
                });
            };
        };

C'est la liaison qui essaie de se produire après le chargement des données. RequestLog ne semble pas exister au moment de la liaison, même s'il ne semblent être ok si j'ai mis un point d'arrêt dans la fonction ci-dessus sur la ligne de l'auto.sélectionné(result[0]).

Je pense que c'est une portée de problème mais je ne peux pas pour la vie de moi pense que la meilleure façon de le résoudre. Toute aide serait appréciée.

    <div class="param">
       <span>Time</span>
       <label data-bind="text: selected.RequestLog.Timestamp"></label>
    </div>

Mise à JOUR: Voici le document de prêt de la partie.

jQuery(document).ready(function () {

            var vm = new siteLogModel();
            vm.updateErrorList(0);
            ko.applyBindings(vm);
        });
Quel est votre objet de résultat? Aussi, il peut y avoir un problème avec la façon dont vous utilisez observableArray. Il n'est pas nécessaire de passer au constructeur un tableau vide (mais il ne sera probablement pas de mal) et vous pouvez utiliser l'auto.errorList.push(suite) pour ajouter des valeurs.

OriginalL'auteur Rob Horton | 2014-01-22