在Safari浏览器中不能使用角度监视功能

问题描述:

我有一个搜索文本框。我正在把价值和按回车键给我的结果。在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这是保持全球。 –

尝试使用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 
} 

如果您想使用$手表,它应该工作:

$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作为依赖关系$ –