knockoutjs “Impossible d'analyser les liaisons” erreur, mais le code fonctionne
J'ai été en utilisant knock-out pour un moment, mais en écrivant quelques exemples de code, cela m'a déconcerté. Le code fonctionne exactement comme je l'attends, où la cliquez sur ce bouton active le visible, mais je suis toujours une erreur:
JsFiddle: http://jsfiddle.net/JasonMore/hCdF8/1/
Uncaught Error: Unable to parse bindings.
Message: ReferenceError: answerClick is not defined;
Bindings value: click: answerClick
de
<ul data-bind="foreach: answers">
<li>
<a class="hiddenButton" href="#" data-bind="click: answerClick" />
<div class="answerNumber" data-bind="visible: showAnswerNumber">
<h2 data-bind="text: answerNumber" />
</div>
<div class="answer" data-bind="visible: showAnswerText">
<p data-bind="text:text" />
<p data-bind="text: points" />
</div>
</li>
</ul>
<script type="text/javascript">
var answerViewModel = function () {
var self = this;
//clicks
self.answerClick = function () {
self.showAnswerNumber(!self.showAnswerNumber());
};
//observables
self.answerNumber = ko.observable();
self.text = ko.observable();
self.points = ko.observable();
self.showAnswerNumber = ko.observable(true);
//computed
self.showAnswerText = ko.computed(function () {
return !self.showAnswerNumber();
});
};
var roundViewModel = function () {
var self = this;
self.answers = ko.observableArray();
};
var answer1 = new answerViewModel();
answer1.text = "foo answer";
answer1.answerNumber = 1;
answer1.points = 50;
var vm = new roundViewModel();
vm.answers.push(answer1);
ko.applyBindings(vm);
</script>
Vous devez vous connecter pour publier un commentaire.
Parce que vous êtes à la fermeture de votre balise d'ancrage:
<a />
, c'est d'obtenir des rendus d'une manière étrange où un supplément de balise d'ancrage est à l'extérieur de laforeach
et pas dans un contexte oùanswerClick
est une fonction valide.Je ne suis pas sûr de ce que le contenu que vous souhaitez utiliser pour votre lien, mais vous avez besoin d'avoir une ouverture et une balise de fermeture comme:
<a class="hiddenButton" href="#" data-bind="click: answerClick">link</a>
Vous ne savez pas si vous avez l'intention d'envelopper le contenu de ce lien, mais c'est là que se situe votre question.
Exemple: http://jsfiddle.net/rniemeyer/hCdF8/2/