2014-06-20 17 views
18

मैं इस प्रकार है-चुने टैग है:jquery से एनजी-चेंज कैसे ट्रिगर करें?

<select ng-change="doSomething()" ng-model="myModel"> </select> 

और मैं इसे (बता गया) के लिए एक jQueryUI नियंत्रण उपयोग कर रहा हूँ, घटना "बदलाव" jQuery से शुरू हो रहा DoSomething ट्रिगर नहीं करता()।

क्या आप जानते हैं कि बाहरी कोणीय से एनजी-चेंज कैसे ट्रिगर करना है?

उत्तर

4

उह - यह भयानक अभ्यास है - लेकिन आप angular.element का उपयोग कर सकते हैं और लक्ष्य नियंत्रक के भीतर मौजूद तत्व से scope प्राप्त कर सकते हैं।

उदाहरण:

<div ng-controller="myApp"> 
    <span id="test"></span> 
</div> 

जावास्क्रिप्ट:

var scope = angular.element("#test").scope(); 
scope.doSomething(); 

आपका scope चर अब सभी तरीकों myApp नियंत्रक पर परिभाषित करने के लिए उपयोग किया है।

+1

यदि यह भयानक अभ्यास है, तो सर्वर पर डिफ़ॉल्ट मान के साथ आबादी वाले इनपुट तत्वों के साथ क्या करना है? – Lawyerson

+0

@ बॉस लॉयर्सन - इनपुट 'मान' विशेषता को पॉप्युलेट न करें - इसके बजाय कोणीय के माध्यम से सर्वर मान को पार्स करें और इसे सही' ngModel' चर के लिए असाइन करें। – tymeJV

+0

यह केवल डीबग मोड में काम करता है। angular.element ("# id")। स्कोप() रिलीज मोड में उपलब्ध नहीं है। "डोम से स्कॉप्स पुनर्प्राप्त करने" के बारे में अनुभाग देखें। [लिंक] (https://docs.angularjs.org/guide/scope) – Cesar

43

प्रश्न यह नहीं है कि कुछ कोड कैसे चलाएं, बल्कि परिवर्तन ईवेंट को कैसे ट्रिगर करें। मुझे ऐसा करने के लिए एक कोणीय-अनुकूल तरीका मिला। मेरे पास एक jQuery UI स्लाइडर है जो उस अन्य इनपुट के मान को बदलता है जिस पर एनजी-चेंज है। रहस्य यह है कि एक बार जब आप इसे कोणीय में बदल देते हैं। अब आपके पास ट्रिगर हैंडलर नामक एक विधि तक पहुंच है। मैं क्या देखा है से, इस का उपयोग करते हुए खराब व्यवहार का विचार नहीं किया जाएगा:

angular.element(document.getElementById('test')).triggerHandler('change'); 

tymeJV के जवाब angular.element("#test") किया सीधे jQuery का उपयोग किए बिना, लेकिन मैं एक कंसोल त्रुटि और टूटी हुई कार्यक्षमता कि जिस तरह से मिला है। यह संस्करण किसी भी निर्भरता के बिना काम करता है।

+0

यह वही है जो मुझे चाहिए जब एक jQuery '.trigger ('change') 'काम नहीं करता था। धन्यवाद! – pappy

+0

यह वही है जो मैं ढूंढ रहा था। यह आपको जावास्क्रिप्ट के माध्यम से व्यावहारिक रूप से तत्व पर एनजी-चेंज विधि को ट्रिगर करने की अनुमति देता है। बहुत उपयोगी जब आपके पास एक कस्टम निर्देश है जो आपके इनपुट को संभालता है और जब इनपुट vale बदलता है तो आपको परिवर्तन फ़ंक्शन को ट्रिगर करने की आवश्यकता होती है। – Xenology

संबंधित मुद्दे