2017-06-20 95 views
0

我有一個搜索文本框。我正在把價值和按回車鍵給我的結果。在Safari瀏覽器中不能使用角度監視功能

這是我的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正確。但是,如果我直接複製值並粘貼到文本框中,它將變爲空值。當我直接在搜索框中複製並粘貼值時,$ watch不起作用。我該如何解決這個問題。

+0

爲什麼在使用入站'ngModel'時使用'$ watch'?你可以使用'ngChange'在變化上掛接一個監聽器... –

+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/

您需要將參數傳遞到$ watch中,而不是像原來那樣查看$ scope.query。

+0

嘿我在safari瀏覽器中試過你的提琴手它工作正常,但在我的代碼中,當我在做Command + V時,手錶沒有被觸發。我更新了我的代碼,正如你所說的請看看。 –

+0

行蹤是你的$手錶?它在指令的控制器還是頁面控制器中? – rrd

+0

我沒有在我的JS中加入$ watch作爲依賴關係$ –

相關問題