हाल ही में मैंने व्यूमोडेल को एक अलग जावास्क्रिप्ट फ़ाइल में अलग कर दिया है।नॉकआउट फायरिंग लागू करने पर बाध्यकारी क्लिक करें बाइंडिंग
var Report = (function($) {
var initialData = [];
var viewModel = {
reports: ko.observableArray(initialData),
preview: function(path) {
// preview report
},
otherFunctions: function() {}
};
return viewModel;
})(jQuery);
यहाँ HTML और नॉकआउट संबंधित कोड
<script type="text/javascript" src="path/to/report/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
ko.applyBindings(Report, document.body);
});
</script>
एचटीएमएल यूजर इंटरफेस एक बटन है, जिस पर क्लिक दृश्य मॉडल
<input type="button" name="Preview" id="Preview" class="btnPreview"
data-bind="click: Report.preview('url/to/report')" />
समस्या में पूर्वावलोकन समारोह के लिए डेटा बाँध है पूर्वावलोकन विधि को कॉल किया जाता है जब निम्न पंक्ति $ (दस्तावेज़) में निष्पादित होती है .ready() फ़ंक्शन
ko.applyBindings(Report, document.body);
पूर्वावलोकन बटन पूर्वावलोकन फ़ंक्शन पर क्लिक किए बिना उपयोगकर्ता को निकाल दिया जाता है। इस व्यवहार का कारण क्या हो सकता है? जब मैं HTML पृष्ठ में मॉडल जावास्क्रिप्ट को देखता हूं तो पूरी चीजें ठीक काम कर रही थीं।
इस उत्तर को पाने के लिए मुझे एक मिनट लगा। स्पष्टीकरण की मुझे आवश्यकता है: ऐसा इसलिए है क्योंकि आप 'Report.preview' को'() 'के साथ कॉल कर रहे हैं कि यह फ़ंक्शन पॉइंटर को वापस करने के बजाय कॉल निष्पादित करता है। ब्रैकेट के बिना यह उम्मीद के रूप में काम करेगा। – Peter