2013-03-02 19 views
18

私は現在、検索ボックスの値であるモデルを持っています。検索操作は完全に実行されていますが、検索テキストが変更されたときにもう1つの機能が実行されるようにしたいと考えています。だから私はlistenerまたはwatchモデル変数を追加したいと思います。どうしたらいいですか?angularjsのモデルにリスナーを追加する

+0

jqueryを使用していますか? – SteveP

+0

@SteveP No. jqueryを使用していません。 – Rahul

答えて

38

あなたのユースケースをカバーするために2つのオプションを持っている:changeHandlerがある

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

は、あなたがそうのように、あなたの入力を書くことができng-changeディレクティブ

を使用しますスコープに定義された関数。

は、あなたのコントローラに書き込むことによって、スコープ

に時計を使用します。

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

ここで働いているの両方を示すplunk:http://plnkr.co/edit/Jgb2slcBFzLNKK0JFNyo?p=preview

を2つのアプローチの違いはということですng-changeは、ユーザ入力の反復の結果としてのみ発火し、$watchは、モデル突然変異に対して起動します。入力制御、またはモデルへの他の変更が含まれます。したがって、反応させたいイベントを正確に選択することができます。

+1

ところで、これは 'ngModel'値に' $ watch'を使うのは良い習慣ではないことを理解しました。私が読んだところによると、 '$ watch'は本質的にスコープリスニングに専念していますが、ngChangeは' ngModel'の変更を聞いていますが、誤解されるかもしれません。 –

関連する問題