2017-06-20 14 views
0

私は検索テキストボックスを持っています。私は価値を置いているし、Enterキーを押すと結果が出てきます。サファリブラウザで角膜時計機能が動作しません

これは私のHTMLコード

 <input type="text" class="filter-input" my-enter="submitFilterForm()" ng-model="vm.query" auto-focus /> 

である。これは、私のJSファイル

   $scope.$watch("vm.query", function(name) { 
      $scope.validationError = false; 
      console.log("value of query is", name); 
      filterStateService.updateSearchQuery(name); 
     }); 

私入力し、私のカスタムディレクティブです。 ng-model = "query"では、JSで$ watch関数を定義しました。

文字でテキストボックスに値を入力する場合は、$ scope.queryが正しく出力されています。しかし、私は直接値をコピーして、テキストボックスに貼り付けている場合、それはnullとして来ています。私が直接searchboxに値をコピーアンドペーストしているときに、$ watchが動作しません。どうすればこの問題を解決できますか?

+0

インバウンド 'ngModel'を使用すると、なぜあなたは' $ watch'を使用していますか? 'ngChange'を使用して、変更時にlisterenをフックすることができます。 –

+0

私は、この値を別のjsで保持する必要があります。 –

答えて

1

機能を見て利用NG-変更しようとしませ:

HTML:

<input type="text" class="filter-input" my-enter="submitFilterForm()" ng-model="query" ng-change="queryChanged" ge-auto-focus /> 

JS:

function queryChanged(){ 
    $scope.query //do something 
} 
0

あなたは$ウォッチを使用したい場合は、それが動作するはずです:

$scope.$watch('vm.query', function(newValue, oldValue) { 
    console.log('newValue:', newValue); 
    console.log('oldValue:', oldValue); 
}); 

https://jsfiddle.net/jbbrwcky/rufe5da1/6/

$ scope.queryを見たのではなく、$ watchに引数を渡す必要があります。

+0

ちょっと、私はコマンド+ Vをやっているときに私のコードでうまく動作しているサファリブラウザであなたのフィドラーを試して、時計がトリガされていません。私はコードを更新しました。 –

+0

あなたの$時計はどこですか?ディレクティブのコントローラーかページコントローラーにありますか? – rrd

+0

私のJSの依存関係として$ watchを追加していない –

関連する問題