Recientemente he separado ViewModel a un archivo JavaScript por separado.Knockout disparando enlace de clic en applyBindings
var Report = (function($) {
var initialData = [];
var viewModel = {
reports: ko.observableArray(initialData),
preview: function(path) {
// preview report
},
otherFunctions: function() {}
};
return viewModel;
})(jQuery);
Aquí está el código HTML y relacionados Knockout
<script type="text/javascript" src="path/to/report/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
ko.applyBindings(Report, document.body);
});
</script>
interfaz de usuario HTML tiene un botón en la cual clic es enlazar datos a la función de vista previa en el modelo de vista
<input type="button" name="Preview" id="Preview" class="btnPreview"
data-bind="click: Report.preview('url/to/report')" />
Problema método de vista previa se llama cuando la siguiente línea ejecutar en $ (document) ready() la función
ko.applyBindings(Report, document.body);
es decir, sin el usuario haga clic en el botón de la función de vista previa vista previa se dispara. ¿Cuál podría ser el motivo de este comportamiento? Todo estaba funcionando bien cuando veía el modelo de JavaScript en la página HTML.
Me tomó un minuto obtener esta respuesta. La aclaración que necesitaba: es porque está llamando a 'Report.preview' con'() 'que ejecuta la llamada en lugar de devolver el puntero a la función. Sin corchetes funcionaría como se esperaba. – Peter