2013-02-06 36 views
7

से कोणीय जेएस अपडेट मॉडल मैंने इस बारे में प्रश्नों के ढेर को देखा है, और उन सभी को $scope.$apply(), $scope.$digest() पर कॉल करके या इनपुट पर परिवर्तन() विधि को ट्रिगर करके हल किया जाना प्रतीत होता है। लेकिन मुझे लगता है कि यह उन तरीकों से काम नहीं कर रहा है। इस पहेली में, मैं बॉक्स में एक नाम टाइप कर सकता हूं और मॉडल टाइप को अपडेट करने के लिए अपडेट कर सकता हूं। लेकिन जब मैं लिंक पर क्लिक करता हूं, तो इनपुट नाम को किसी निश्चित मान पर सेट करने के लिए, मैं मॉडल नाम अपडेट करना चाहता हूं। मुझे क्या करना चाहिये?डोम

कारण मैं ऐसा करने का प्रयास कर रहा हूं, क्योंकि जब मैं उपयोगकर्ता ऑटोफिल या लास्टपैस या इसी तरह का उपयोग कर फॉर्म को स्वत: भरता हूं तो मैं अपने कोणीय मॉडल को रीफ्रेश करने में सक्षम होना चाहता हूं। निश्चित रूप से डीओएम से मॉडल को रीफ्रेश करने के लिए कुछ कोणीय कमांड है?

http://jsfiddle.net/PXCUq/

$(function() { 
    $('#setFirstName').click(function() { 
     $('input.firstname').val('Test Name'); 
     angular.element($('input.firstname')[0]).scope().$apply(); 
     // Model still not updated 
    }); 
}); 
+0

क्या कोई कारण है कि आप इसे इस तरह से नहीं कर रहे हैं ?: set first name '? –

+0

मैं ब्राउज़र फॉर्म ऑटोफिल काम करने के लिए एक कामकाज की तलाश में हूं। समस्या का प्रदर्शन करने के लिए, उपयोगकर्ता इनपुट के बिना मूल्य बदलने के लिए यह एक आसान तरीका है। –

उत्तर

5

, गुंजाइश जाओ तो एनजी मॉडल संपत्ति बदलने के लिए:

$('#setFirstName').click(function() { 
    var scope = angular.element($('input').get(0)).scope() 
    scope.firstname = 'Test Name'; 
    scope.$apply(); 
}); 

आप एक बेहतर jQuery चयनकर्ता के साथ आ सकते हैं। मैं केवल कोणीय भाग पर ध्यान केंद्रित कर रहा था।

Fiddle

+0

यह काम करेगा ... तो डोम से मॉडल को रीफ्रेश करने के लिए, मुझे हर तत्व के माध्यम से चलाने की आवश्यकता होगी, इसकी एनजी-मॉडल विशेषता प्राप्त करें, और मॉडल वैल्यू सेट करें। क्या कोणीय के भीतर ऐसा करने का कोई तरीका नहीं है? –

+0

आपको इसके दायरे को पाने के लिए हर तत्व से गुज़रने की आवश्यकता नहीं है। आप बस एक बार गुंजाइश प्राप्त करते हैं। पसंद: 'स्कोप = angular.element ($ ('div [ng-view]> *) [0])। स्कोप()' – slowpoison