Knockout-Firing-Klickbindung auf applyBindings

Kürzlich habe ich ViewModel in eine separate JavaScript-Datei aufgeteilt.

<code>var Report = (function($) {
    var initialData = [];
    var viewModel = {
        reports: ko.observableArray(initialData),
        preview: function(path) {
            // preview report
        },
        otherFunctions: function() {}
    };
    return viewModel;
})(jQuery);​
</code>

Hier ist der HTML- und Knockout-Code

<code><script type="text/javascript" src="path/to/report/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        ko.applyBindings(Report, document.body);
    });
</script>
</code>

Die HTML-Benutzeroberfläche verfügt über eine Schaltfläche, auf die geklickt wird, um Daten an die Vorschaufunktion im Ansichtsmodell zu binden

<code><input type="button" name="Preview" id="Preview" class="btnPreview" 
    data-bind="click: Report.preview('url/to/report')" />
</code>

Problem Die Vorschau-Methode wird aufgerufen, wenn die folgende Zeile in der Funktion $ (document) .ready () ausgeführt wird

<code>ko.applyBindings(Report, document.body); 
</code>

Das heißt, ohne dass der Benutzer auf die Schaltfläche Vorschau klickt, wird die Vorschaufunktion ausgelöst. Was könnte der Grund für dieses Verhalten sein? Das ganze Zeug hat gut funktioniert, als ich Modell-JavaScript in der HTML-Seite selbst angezeigt habe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage