最近我将 ViewModel 分离到一个单独的 JavaScript 文件中。
var Report = (function($) {
var initialData = [];
var viewModel = {
reports: ko.observableArray(initialData),
preview: function(path) {
// preview report
},
otherFunctions: function() {}
};
return viewModel;
})(jQuery);
这是 HTML 和 Knockout 相关代码
<script type="text/javascript" src="path/to/report/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
ko.applyBindings(Report, document.body);
});
</script>
HTML 用户界面有一个按钮,单击该按钮将数据绑定到视图模型中的预览功能
<input type="button" name="Preview" id="Preview" class="btnPreview"
data-bind="click: Report.preview('url/to/report')" />
在 $(document).ready() 函数中执行以下行时调用问题预览方法
ko.applyBindings(Report, document.body);
也就是说,无需用户点击预览按钮,预览功能就会被触发。这种行为的原因可能是什么?当我在 HTML 页面本身中查看模型 JavaScript 时,整个工作正常。