Son zamanlarda ViewModel'i ayrı bir JavaScript dosyasına ayırdım. İşte Knockout ateşleme clickBindings'e tıklayın.
var Report = (function($) {
var initialData = [];
var viewModel = {
reports: ko.observableArray(initialData),
preview: function(path) {
// preview report
},
otherFunctions: function() {}
};
return viewModel;
})(jQuery);
tıklama görünümü modeli
<input type="button" name="Preview" id="Preview" class="btnPreview"
data-bind="click: Report.preview('url/to/report')" />
Sorun önizleme işlevine veri bağlama hangi HTML ve HTML kullanıcı arayüzü bir düğme
<script type="text/javascript" src="path/to/report/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
ko.applyBindings(Report, document.body);
});
</script>
Nakavt ilgili koddur Aşağıdaki satır $ (document) .ready() işlevi
içinde yürütüldüğünde önizleme yöntemi çağrılır.Bu, kullanıcı Önizleme düğmesine tıklandığında önizleme işlevi tetiklenir. Bu davranış için sebep ne olabilir? HTML sayfasının kendisinde model JavaScript'i görüntülediğimde her şey iyi çalışıyordu.
Bu cevabı almak için bana bir dakika sürdü. İhtiyacım olan açıklama: çünkü '()' ile 'Report.preview' işlevini çağırmak yerine, işlev işaretçisini döndürmek yerine çağrıyı yürütür. Parantez olmadan beklendiği gibi çalışır. – Peter