Javascript 带有数据列表的输入-AngularJS的IE中未触发ng更改

Javascript 带有数据列表的输入-AngularJS的IE中未触发ng更改,javascript,angularjs,angularjs-ng-change,Javascript,Angularjs,Angularjs Ng Change,我有一个带有datalist的输入标记,在InternetExplorer11中选择时不会触发ng更改。它只会在输入模糊时触发。它是用铬做的 代码笔如下: {{selectedVal}} 如果您检查代码,您可以看到在chrome中,数据列表值显示在下面的选择中。在IE中,该值仅在按tab键或在标记外部单击时显示 请让我知道如何在IE中工作,以便在选择数据列表值时触发ng更改 注意:如果您将AngularJS版本更改为1.2.x,则工作正常。上面的任何东西都不起作用。这是一个更大应用程序的简

我有一个带有datalist的输入标记,在InternetExplorer11中选择时不会触发ng更改。它只会在输入模糊时触发。它是用铬做的

代码笔如下:


{{selectedVal}}

如果您检查代码,您可以看到在chrome中,数据列表值显示在下面的选择中。在IE中,该值仅在按tab键或在标记外部单击时显示

请让我知道如何在IE中工作,以便在选择数据列表值时触发ng更改


注意:如果您将AngularJS版本更改为1.2.x,则工作正常。上面的任何东西都不起作用。这是一个更大应用程序的简化版本,我在从数据列表中选择时触发后端服务

若要获得预期结果,请对输入字段使用oninput事件的以下选项

<input list="testList" name="origin node" ng-model="SelectedDoctor" oninput = "angular.element(document.getElementById('check')).scope().LoadSessionData(this)" autocompletestListte="off" required /> 
<datalist id="testList" > 

ng change未被激发,因为ng click或ng change所在的数据列表不起作用

将值赋给scope变量-selectedVal后,运行$scope.$apply()在UI上查看所选选项


代码示例-

AngularJS忽略Internet Explorer 11中的
input
事件,因为Microsoft对
input
的支持存在很大缺陷。但是,您可以实现自己的指令并将其分配给元素,以便在发生
输入
事件时自己发出
更改
事件

.directive('input', function() {
  return {
    link: function(scope, element, attrs) {
      element.on('input', function() { element.triggerHandler('change'); });
    }
  };
});

我不建议使用
oninput
属性,因为您应该始终坚持使用
ng-*
属性,并且不要混淆AngularJS回调和本机JavaScript事件处理程序。使用oninput,您可能会遇到与AngularJS数据模型有关的其他问题。

谢谢Naga Sai。这就像预期的一样!谢谢你的帮助!我不建议混合使用本机JavaScript事件处理程序,例如
oninput
和AngularJS回调!
.directive('input', function() {
  return {
    link: function(scope, element, attrs) {
      element.on('input', function() { element.triggerHandler('change'); });
    }
  };
});