2013-03-02 6 views
18

मेरे पास वर्तमान में एक मॉडल है जो एक खोज बॉक्स का मूल्य है। खोज ऑपरेशन पूरी तरह से प्रदर्शन कर रहा है लेकिन जब भी खोज टेक्स्ट संशोधित होता है तब भी मैं एक और फीचर निष्पादित करना चाहता हूं। तो मैं मॉडल चर के listener या watch जोड़ना चाहता हूं। मैं यह कैसे कर सकता हूं?angularjs में एक मॉडल पर श्रोता जोड़ना

+0

क्या आप jquery का उपयोग कर रहे हैं? – SteveP

+0

@SteveP नहीं। मैं jquery का उपयोग नहीं कर रहा हूं। – Rahul

उत्तर

38

आप 2 विकल्प आपके उपयोग के मामले को कवर करने के लिए मिला है:

ng-change निर्देश

उपयोग करते हैं ताकि तरह अपने इनपुट लिख सकते हैं:

Search: <input ng-model="search.model" ng-change="changeHandler()"> 

जहां changeHandler एक है एक दायरे पर परिभाषित समारोह। अपने नियंत्रक में लिख कर एक गुंजाइश

पर नजर

उपयोग:

$scope.$watch('search.model', function(newVal, oldVal){ 
    console.log("Search was changed to:"+newVal); 
    $scope.search.watch = newVal; 
    }); 

यहाँ एक काम है illustrating फेंकना दोनों: http://plnkr.co/edit/Jgb2slcBFzLNKK0JFNyo?p=preview

2 दृष्टिकोणों के बीच अंतर यह है कि है ng-change केवल इनपुट के साथ उपयोगकर्ता के iteractions के परिणामस्वरूप आग लग जाएगा जबकि $watch किसी भी मॉडल उत्परिवर्तन के लिए आग लग जाएगी - ट्रिगर इनपुट नियंत्रण या मॉडल में कोई अन्य परिवर्तन। तो आप सटीक रूप से चुन सकते हैं कि आप किस घटना पर प्रतिक्रिया करना चाहते हैं।

+1

वैसे, मुझे समझ में आया कि 'ngModel' मानों पर' $ watch' का उपयोग करने के लिए यह एक अच्छा अभ्यास नहीं था। जो मैंने पढ़ा है, उसके अनुसार, '$ watch' अनिवार्य रूप से सुनने के लिए समर्पित है, जबकि ngChange हमें 'ngModel' परिवर्तनों को सुनने दें ... लेकिन शायद मुझे गलत समझा जाए। –

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