2013-04-29 7 views
5

विषय राज्यों के रूप में, मैं कैसे को गति प्रदान करते कार्यों उपयोगकर्ता इनपुट के बिना एककैसे क्षेत्र

modelController.$parsers(...) 

अंदर जगह लेने के लिए ... एक ही रास्ता मैं के बारे में सोच सकते हैं में कुछ भी inputing बिना कोणीय पारसर्स को गति प्रदान करने उन्हें एक समारोह के अंदर लपेटकर और इसे कहते है, लेकिन वहाँ

**//pseudo 
$(modelController).trigger('just got dirty');** 

कारण मैं इस की आवश्यकता होगी गति प्रदान करने के लिए एक बेहतर तरीका है प्रस्तुत करने पृष्ठ पर ही मान्य करने के लिए इनपुट क्षेत्र को गति प्रदान करने के लिए है।

उत्तर

9

मैं इस को हल करने के लिए एक रास्ता मिल गया है - बस मॉडल मूल्य के साथ पारसर्स फोन:

angular.forEach(ngModel.$parsers, function (parser) { 
    parser(ngModel.$viewValue); 
}); 

यह इतना आसान है, और यह सबसे सही समाधान प्रतीत होता है।

+0

यह मेरे लिए पूरी तरह से काम किया (संस्करण 1.2.2 9) - धन्यवाद! यह सरल उत्तर अधिक व्यापक क्यों नहीं है? उत्तर पर थोड़े सुधार के लिए, 'angular.forEach' के बजाय मूल' के लिए 'लूप का उपयोग करें, पार्सर की' नाम 'प्रॉपर्टी की जांच करें और केवल सबकुछ (यदि लागू हो) के बजाय आप जो चाहते हैं उसे पुनः प्राप्त करें, और' ब्रेक ' एक बार जब आप जो चाहते हैं उसे ट्रिगर कर लेते हैं तो लूप। हालांकि, ये केवल माइक्रो-अनुकूलन हैं। –

1

यह सवाल मुझे भी के लिए वास्तविक है ... क्योंकि मैं के साथ इस मुद्दे के समाधान कर रहा हूँ:

var triggerParsers = function() { 
    var val = ngModel.$viewValue; 
    ngModel.$setViewValue(null); 
    ngModel.$setViewValue(val); 
}; 
+0

मुझे विश्वास है कि उत्तर तत्व है। ट्रिगर ('परिवर्तन'); – user2167582

+0

मैंने element.trigger का उपयोग करने का प्रयास किया है, लेकिन यह चाल काम नहीं करती है, ऐसा इसलिए है क्योंकि घटना को निकाल दिया गया था, लेकिन मूल्य नहीं बदला गया था इसलिए कोणीय पार्सर्स लॉन्च नहीं करता है। –

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