2

私はしばらくの間ノックアウトを使用してきましたが、いくつかのコード例を書く際に、これは私を困惑させました。コードは期待どおりに機能し、クリックボタンで表示が切り替わりますが、それでもエラーが発生します。

JsFiddle: http: //jsfiddle.net/JasonMore/hCdF8/1/

Uncaught Error: Unable to parse bindings.
Message: ReferenceError: answerClick is not defined;
Bindings value: click: answerClick

から

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

1 に答える 1

3

アンカータグを閉じているため: <a />、余分なアンカータグがの外部にあり、が有効な関数foreachであるコンテキストではないという奇妙な方法でレンダリングされています。answerClick

リンクに使用するコンテンツがわかりませんが、次のような開始タグと終了タグが必要です。

<a class="hiddenButton" href="#" data-bind="click: answerClick">link</a>

そのリンクでコンテンツをラップするつもりだったかどうかはわかりませんが、そこに問題があります。

サンプル: http: //jsfiddle.net/rniemeyer/hCdF8/2/

于 2012-04-12T18:50:30.563 に答える