Encuadernación por despido, haga clic en el enlace en applyBindings.

Recientemente, he separado ViewModel a un archivo JavaScript separado.

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

Aquí está el código relacionado con HTML y Knockout

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

La interfaz de usuario HTML tiene un botón en el que el clic es el enlace de datos para la función de vista previa en el modelo de vista

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

Problema se llama al método de vista previa cuando la siguiente línea se ejecuta en la función $ (documento) .ready ()

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

Es decir, sin que el usuario haga clic en la función de vista previa del botón Vista previa se activa. ¿Cuál podría ser la razón de este comportamiento? Todo funcionaba bien cuando veía el modelo de JavaScript en la propia página HTML.

Respuestas a la pregunta(2)

Su respuesta a la pregunta