मार्कअप में जिस तरह से नॉकआउट बाइंडिंग घोषित की गई है, उसके संदर्भ में कुछ भी नहीं बदलेगा, लेकिन नॉकआउट लाइब्रेरी के लिए इंटरफेस लिखे जाने के बाद हमें इंटैलिजेंस अच्छाई मिलेगी। इस संबंध में यह jquery नमूना की तरह ही काम करेगा , जिसमें एक टाइपस्क्रिप्ट फ़ाइल है जिसमें अधिकांश jQuery एपीआई के लिए इंटरफेस है ।
मुझे लगता है कि अगर आप को और $ $ के लिए दो चर घोषणाओं से छुटकारा पा लेंगे तो आपका कोड काम करेगा। ये वास्तविक ko और $ चर को छिपा रहे हैं जो नॉकआउट और jquery स्क्रिप्ट लोड होने पर बनाए गए थे।
मुझे ऐसा करने के लिए दृश्य स्टूडियो टेम्पलेट प्रोजेक्ट को नॉकआउट करने के लिए पोर्ट करना पड़ा:
app.ts:
class GreeterViewModel {
timerToken: number;
utcTime: any;
constructor (ko: any) {
this.utcTime = ko.observable(new Date().toUTCString());
this.start();
}
start() {
this.timerToken = setInterval(() => this.utcTime(new Date().toUTCString()), 500);
}
}
window.onload = () => {
// get a ref to the ko global
var w: any;
w = window;
var myKO: any;
myKO = w.ko;
var el = document.getElementById('content');
myKO.applyBindings(new GreeterViewModel(myKO), el);
};
default.htm:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>TypeScript HTML App</title>
<link rel="stylesheet" href="app.css" type="text/css" />
<script src="Scripts/knockout-2.1.0.debug.js" type="text/javascript"></script>
<script src="app.js"></script>
</head>
<body>
<h1>TypeScript HTML App</h1>
<div id="content" data-bind="text: utcTime" />
</body>
</html>