दिलचस्प पोस्ट
स्काला मैक्रोज़: स्काला में एक कक्षा के क्षेत्रों के बाहर नक्शा बनाना मैग्रा में परिभाषित प्रगति कैसे jQuery का उपयोग कर एक तत्व के शीर्षक विशेषता को बदलने के लिए किसी अन्य ऑब्जेक्ट में पारित किए जाने पर IDisposable ऑब्जेक्ट पर डिस्पोज करना कौन चाहिए? वेबैप के बाहर बाहरी फ़ोल्डर से चित्रों की सेवा करने के लिए कॉन्फिग टॉमकेट कैसे करें? सार्वजनिक रूप से खुलासा स्रोत कोड के बिना एक ग्रेगुल के साथ एक एंड्रॉइड लाइब्रेरी जार कैसे बना सकता है? एकता में रायस्ट के साथ परतें और बिटमैस्क का उपयोग करना आईओएस 6/7 में संदेश "सेल सेल के लिए कोई इंडेक्स पथ पुनः उपयोग नहीं किया जा रहा है" का क्या अर्थ है? जब कुंजीपटल मौजूद है, तो UITextField कैसे चलाना है? यूटीसी और जीएमटी मानक समय में अंतर। नेट Asp.net MVC4: दोनों नियंत्रक और कार्रवाई पर प्राधिकृत एसक्यूएल सर्वर में एक्सएमएल एन्कोडिंग <? Xml संस्करण = "1.0" एन्कोडिंग = "यूटीएफ -8"?> एक्सएमएल आउटपुट कैसे जोड़ें कंप्यूटिंग रैखिक समय में चौराहे सेट? तीन। जेएस प्रोजेक्टर और रे ऑब्जेक्ट्स कोड गोल्फ़: गणितीय अभिव्यक्ति मूल्यांकनकर्ता (जो कि PEMDAS का सम्मान करता है)

टाइप स्क्रिप्ट नियंत्रक और कोणीय जेएस का उपयोग करके डेटा को कैसे बाँटें

मैं टाइप स्क्रिप्ट के साथ खेल रहा हूं। मैंने अपने एन्जिलर जेएस नियंत्रक को टाइप स्क्रिप्ट पर बदल दिया है लेकिन एनजी-रेपरेटर में समस्या का सामना करना पड़ रहा है। (मैं नीचे अपना नियंत्रक कोड संलग्न किया है: –

class CustomCtrl{ public customer; public ticket; public services; public cust_File; public ticket_file; public service_file; static $inject = ['$scope', '$http', '$templateCache']; constructor ( private $http, private $templateCache ){} 

वेब के समाधान से एकत्रित समाधान "टाइप स्क्रिप्ट नियंत्रक और कोणीय जेएस का उपयोग करके डेटा को कैसे बाँटें"

मैंने TypeScript में नियंत्रक बनाने और प्रयोग करने और इसे TypeScript में TypeScript करने के बारे में अधिक विवरण का एक और जवाब जोड़ने का निर्णय लिया।

यह इस उत्तर का विस्तार है

मैं कैसे TypeScript का उपयोग कर अपने नियंत्रक को परिभाषित कर सकता हूँ? जहां हमारे पास काम कर रहे एक प्लंकर भी है

इसलिए इस निर्देश के लिए:

 export class CustomerSearchDirective implements ng.IDirective { public restrict: string = "E"; public replace: boolean = true; public template: string = "<div>" + "<input ng-model=\"SearchedValue\" />" + "<button ng-click=\"Ctrl.Search()\" >Search</button>" + "<p> for searched value <b>{{SearchedValue}}</b> " + " we found: <i>{{FoundResult}}</i></p>" + "</div>"; public controller: string = 'CustomerSearchCtrl'; public controllerAs: string = 'Ctrl'; public scope = {}; } 

हम देख सकते हैं, हमने निर्देश के रूप में यह निर्देश उपलब्ध होने के लिए घोषित किया है। हम एक टेम्पलेट भी तैयार कर चुके हैं। यह टेम्प्लेट हमारे नियंत्रक Ctrl.Search() और कॉल एक्शन को बाइंड करने के लिए तैयार है। हम कह रहे हैं कि नियंत्रक का नाम क्या है: 'ग्राहक खोज' Ctrl और इसे 'Ctrl' के रूप में उपलब्ध कराने के लिए रनटाइम पूछ रहा है (नियंत्रक एएस 🙂

अंत में हम उस वस्तु को कोणीय मॉड्यूल में इंजेक्ट करते हैं:

 app.directive("customerSearch", [() => new CustomerSearch.CustomerSearchDirective()]); 

हम $scope ng.IScope रूप में उपयोग कर सकते हैं, लेकिन इसे अधिक टाइप करने के लिए, हम अपना स्वयं का इंटरफ़ेस बना सकते हैं:

 export interface ICustomerSearchScope extends ng.IScope { SearchedValue: string; FoundResult: string; Ctrl: CustomerSearchCtrl; } 

इस तरह, हम जानते हैं, कि हमारे पास स्ट्रिंग की गई FoundResult और दूसरी स्ट्रिंग FoundResult । हमने आवेदन को यह भी सूचित किया है कि उस क्षेत्र में Ctrl को इंजेक्शन दिया जाएगा, और यह ग्राहकशैच्छिक प्रकार का होगा। और यहां नियंत्रक आता है:

 export class CustomerSearchCtrl { static $inject = ["$scope", "$http"]; constructor(protected $scope: CustomerSearch.ICustomerSearchScope, protected $http: ng.IHttpService) { // todo } public Search(): void { this.$http .get("data.json") .then((response: ng.IHttpPromiseCallbackArg<any>) => { var data = response.data; this.$scope.FoundResult = data[this.$scope.SearchedValue] || data["Default"]; }); } } 

प्लस मॉड्यूल में इसके पंजीकरण

 app.controller('CustomerSearchCtrl', CustomerSearch.CustomerSearchCtrl); 

इस नियंत्रक पर क्या दिलचस्प है? इसके पास एक सार्वजनिक एक्टन सर्च है, जिसके माध्यम से इसकी सभी मेम्बस तक पहुंच है this. , जैसे this.$http क्योंकि हमने वी.एस. में उस इंजेक्शन को निर्देश दिया था जो angular.d.ts टाइप / इंटरफ़ेस

 protected $http: ng.IHttpService 

इस्तेमाल किया जाएगा, हम बाद में आसानी से अपने तरीकों का उपयोग कर सकते हैं समान मूल्य का प्रकार है। तब .then()

 .then((response: ng.IHttpPromiseCallbackArg<any>) => {... 

जिसमें डेटा शामिल है: {} किसी भी प्रकार के …

आशा है कि यह थोड़ी मदद करता है, निरीक्षण करते हैं कि यहां सभी कार्रवाई में हैं

आपके निर्माता और $inject साथ एक समस्या है – ये एक साथ फिट होना चाहिए

 // wrong static $inject = ['$scope', '$http', '$templateCache']; constructor ( private $http, private $templateCache ){} // should be static $inject = ['$scope', '$http', '$templateCache']; constructor ( private $scope, private $http, private $templateCache ){} 

वास्तव में क्या हुआ – सभी पैराम्हों को इस अर्थ में ले जाया गया था, कि $http वास्तव में $scope था, आदि …

बस, $inject सरणी को निर्माता पैरामीटर सूची में फिट होना चाहिए

बीटीडब्लू, यही कारण है कि मैंने पहले यहां बताया थाः https://stackoverflow.com/a/30482388/1679310 ने घोषणा में प्रकारों का उपयोग करने का सुझाव दिया है:

  constructor(protected $scope: ICustomerScope, protected $http: ng.IHttpService, protected $templateCache: ng.ITemplateCacheService) { ... } 

लाइब्रेरी बाइंडबल टीएस टाइपस्क्रिप्ट के साथ बाध्यकारी डेटा सेट करने का एक वैकल्पिक तरीका है।

आपके कोड की त्वरित समीक्षा से मुझे पता चला है कि नियंत्रक की search विधि निजी है हो सकता है कि इसे जनता में बदलकर समस्या हल हो।