2013-03-02 21 views
18

Şu anda bir arama kutusunun değeri olan bir modelim var. Arama işlemi mükemmel performans gösteriyor ancak arama metni değiştirildiğinde başka bir özellik daha istiyorum. Bu yüzden model değişkenine listener veya watch eklemek istiyorum. Nasıl yapabilirim?Angularjs modeline bir dinleyici ekleme

+0

jquery kullanıyor musunuz? – SteveP

+0

@SteveP No. jquery kullanmıyorum. – Rahul

cevap

38

Sen kullanım örneğini kapsayacak şekilde 2 seçenek var: changeHandler bir nerede

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

:

Çok sevdiği girişi yazabilirsiniz ng-change direktifini

kullanın Bir kapsamda tanımlanan işlev.

kullanın controller içerisinde yazarak kapsam

bir izleme: http://plnkr.co/edit/Jgb2slcBFzLNKK0JFNyo?p=preview

2 yaklaşım arasındaki fark şudur: Burada

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

bir çalışma hem gösteren düşmek ng-change sadece bir giriş ile kullanıcının iteractions bir sonucu olarak tetiklenir iken $watch herhangi bir model mutasyon için ateş edecek - tetiklenen giriş kontrolü veya modele başka herhangi bir değişiklik. Böylece, tepki vermek istediğiniz olayları hassas bir şekilde seçebilirsiniz.

+1

Bu arada, 'ngModel' değerlerinde' $ watch' kullanmak için iyi bir uygulama olmadığını anladım. Okuduğum şeye göre, '$ watch', dinlemeyi dinlemeye adanmışken ngChange,' ngModel 'değişikliklerini dinlememize izin veriyor ... ama belki de yanlış anladım. –