मैं टाइपस्क्रिप्ट का उपयोग करके एक कोणीय जेएस निर्देश बनाने की कोशिश कर रहा हूं। मेरे निर्देश के लिए 'ngModel' की आवश्यकता है और मैं अपने निर्देश में इंजेक्शन वाली कस्टम सेवा का भी उपयोग कर रहा हूं। मेरी मुख्य समस्या यह है कि मेरी सेवा का उपयोग मेरे लिंक फ़ंक्शन के अंदर नहीं किया जा सकता है।कोणीयजेएस टाइपस्क्रिप्ट निर्देश लिंक फ़ंक्शन
module app.directives {
export var directiveName: string = "theDirective";
angular.module("myApp").directive(directiveName,
(myFactory: app.services.MyFactory) =>
{
return new MyDirective(myFactory);
});
export interface IMyDirectiveScope extends ng.IScope {
ngModel: ng.INgModelController;
}
export class MyDirective implements ng.IDirective {
restrict = "A";
require = "ngModel";
scope = {
ngModel:'='
}
constructor(private myFactory: app.services.MyFactory) {
}
link(scope: IMyDirectiveScope , elem: JQuery, attributes: ng.IAttributes, ngModel: ng.INgModelController) {
//this is window here
elem.bind('blur', (evt: JQueryEventObject) => {
//keyword this is also window here, so yeah bummer indeed
validate();
});
function validate() {
//I need to use my factory here, but I can seem to get it.
//this is always window and I'm kinda stuck here
}
}
}
}
मैं इस विषय पर कुछ और अधिक उन्नत सामान को खोजने के लिए प्रतीत नहीं कर सकते हैं:
यहाँ मैं क्या हासिल करने की कोशिश कर रहा हूँ का एक उदाहरण है। मुझे लगता है कि सभी उदाहरण सेवाओं या जटिल लिंक फ़ंक्शन का उपयोग नहीं करते हैं। कृपया इस प्रश्न का उत्तर किसी प्रकार के उदाहरण के साथ दें। यह चाल है जो आपको लगता है।
अद्यतन: तथ्य यह है कि मेरे लिंक फ़ंक्शन के अंदर 'यह' विंडो है और 'MyDirective' मुझे बहुत समझ में नहीं आता है। कोई विचार क्यों होगा?
गु यह काम करता है, क्या आप मुझे एक उदाहरण दे सकते हैं कि आप कक्षा के बिना इस तरह की स्थितियों से कैसे संपर्क करेंगे? – user1613512
@ user1613512 मैंने कक्षा – rob
के बिना एक उदाहरण शामिल करने के लिए अपना उत्तर संपादित किया unboundLink (...) {var self = this; ...} तो आप इसके बजाय वैध चर() के अंदर स्वयं चर का उपयोग कर सकते हैं। –