최근 ViewModel을 별도의 JavaScript 파일로 분리했습니다. 여기 applyBindings의 녹아웃 클릭 바인딩
var Report = (function($) {
var initialData = [];
var viewModel = {
reports: ko.observableArray(initialData),
preview: function(path) {
// preview report
},
otherFunctions: function() {}
};
return viewModel;
})(jQuery);
를 클릭 뷰 모델
<input type="button" name="Preview" id="Preview" class="btnPreview"
data-bind="click: Report.preview('url/to/report')" />
문제에 미리보기 기능으로 데이터 바인딩되는 HTML과 HTML 사용자 인터페이스는 버튼이
<script type="text/javascript" src="path/to/report/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
ko.applyBindings(Report, document.body);
});
</script>
녹아웃 관련 코드 미리보기 메서드는 $ (document) .ready() 함수에서 다음 줄을 실행할 때 호출됩니다.
ko.applyBindings(Report, document.body);
사용자가 미리보기 버튼을 클릭하지 않으면 미리보기 기능이 실행됩니다. 이 행동의 이유는 무엇일까요? HTML 페이지 자체에서 모델 JavaScript를 볼 때 모든 것들이 잘 작동하고있었습니다.
이 답변을 얻으려면 잠시만 기다려주세요. 필자가 필요로 한 것은 함수 포인터를 반환하는 대신 호출을 실행한다는'Report.preview'를'()'로 호출했기 때문입니다. 대괄호가 없으면 예상대로 작동합니다. – Peter