liaison d'événements dans knockout.js

J'ai un viewModel avec un tableau de answerGroup objets. Lorsque le retour de la propriété de l'un des answerGroup objets est mise à jour, je veux économiser de l'objet mise à jour de ma base de données en passant par l'ajax à mon ASP.Net MVC app.

Au lieu d'avoir un enregistrement standard bouton ou un lien, je veux de l'objet à transmettre à l'appel Ajax lorsque la propriété de l'objet a été mis à jour. Je pensais que je pouvais le faire en se liant à l'événement de changement de l'élément textarea mais si je fais cela, l'ajax fonction est appelée, mais les sous-jacents answerGroup de l'objet de commentaires de la propriété n'est pas mis à jour.

Je suis en utilisant le knock-out 1.2.1. Ci-dessous est le code JavaScript, je n'ai pas inclus le code HTML.

Je suis aller sur ce de la mauvaise façon ou est-il juste que ma syntaxe pour l'knockout.js liaison d'événement est incorrect?

<script>
var viewModel = {}

$(function () {
    viewModel.scenarioId = ko.observable($("#Scenario_ScenarioID").val());
    viewModel.answerGroups = ko.observableArray([]);
    viewModel.addGroup = function (answerGroup) {

        //add item to beginning of array
        this.answerGroups.unshift(answerGroup);
    };

    ko.applyBindings(viewModel);
});

function answerGroup() {
    this.id = ko.observable();
    this.name = ko.observable();
    this.feedback = ko.observable();

    //the groups feedback has been updated so save
    //these details back to the server
    this.updateGroup = function (event) {

      //javascript api library that is an ajax function.
      //this works without a problem.
      api.updateAnswerGroup({
        success: function (result) {
            alert("saved!");
        },
        error: function (e) {
           alert("error!");
        },
        data: "answerGroupId=" + this.id + "&feedback=" + this.feedback
      });

      return true;
    };
}
</script>

<script id="answerGroupsTemplate" type="text/html">
  <div>
    <h4><a href='#'>${ $data.name }</h4>
    <div>
       <textarea cols="100" rows="2" data-bind="event: { text: feedback, change: updateGroup }">
       </textarea>                  
    </div>
  </div>
</script>
  • peut-être que je suis paresseux, mais je pense que c'est trop de code. dont une partie est la partie pertinente de l'
  • Ibu - tout cela est pertinent, je n'ai pas inclus le irrelavant pièces.
  • Le updateGroup fonction est appelée, mais la valeur sous-jacente de la rétroaction de la propriété n'est pas mis à jour. J'ai besoin de la rétroaction de la propriété pour mettre à jour puis la updateGroup fonction à appeler afin que je puisse passer la valeur de cette propriété sur le serveur.
InformationsquelleAutor Robini | 2011-06-05