Microsoft Edge和Angularjs:ng模型没有';t使用输入数字类型和箭头键

Microsoft Edge和Angularjs:ng模型没有';t使用输入数字类型和箭头键,angularjs,microsoft-edge,Angularjs,Microsoft Edge,我有一个带有type=“number”的输入,它与ng模型关联。我希望能够按向上和向下箭头更新其值。但是,在Microsoft Edge中,ng模型不会在这种情况下更新,请参见此处的示例: 有没有一种不使用jquery的方法来更新模型?我们希望避免在控制器中使用jquery,因此这是angularjs和Edge的一个bug,如下所述: 建议使用一个片段自行解决此问题: .directive('input', () => { if(currentBrowser!="edge") re

我有一个带有
type=“number”
的输入,它与ng模型关联。我希望能够按向上和向下箭头更新其值。但是,在Microsoft Edge中,ng模型不会在这种情况下更新,请参见此处的示例:


有没有一种不使用jquery的方法来更新模型?我们希望避免在控制器中使用jquery,因此这是angularjs和Edge的一个bug,如下所述:

建议使用一个片段自行解决此问题:

.directive('input', () => {
  if(currentBrowser!="edge") return {};

  return {
    link: (scope, elem) => {
      if (elem[0].type === 'number') {
        elem.on('keydown', evt => {
          switch (evt.which) {
            case 38:   // UP_ARROW
            case 40:   // DOWN_ARROW
              scope.$evalAsync(() => elem.triggerHandler('change'));
              break;

          }
        });
      }
    }
  };
});

这是angularjs和Edge的一个bug,如下面的讨论所示:

建议使用一个片段自行解决此问题:

.directive('input', () => {
  if(currentBrowser!="edge") return {};

  return {
    link: (scope, elem) => {
      if (elem[0].type === 'number') {
        elem.on('keydown', evt => {
          switch (evt.which) {
            case 38:   // UP_ARROW
            case 40:   // DOWN_ARROW
              scope.$evalAsync(() => elem.triggerHandler('change'));
              break;

          }
        });
      }
    }
  };
});

它应该与此配合使用。问题在于,由于您尚未在控制器中初始化,因此显示器存在问题。它应该可以工作,但在Edge中似乎不起作用。其他一切都是一样的

  <body ng-controller="myCtrl">
    <h1>{{helloworld}}</h1>
    <input type="number" ng-model="md"/>
    <div ng-if="md">{{md}}</div>
  </body>

{{helloworld}}
{{md}}
请检查此处的代码:


它应该与此配合使用。问题在于,由于您尚未在控制器中初始化,因此显示器存在问题。它应该可以工作,但在Edge中似乎不起作用。其他一切都是一样的

  <body ng-controller="myCtrl">
    <h1>{{helloworld}}</h1>
    <input type="number" ng-model="md"/>
    <div ng-if="md">{{md}}</div>
  </body>

{{helloworld}}
{{md}}
请检查此处的代码:


我在使用IE Edge处理数字和日期时间字段的angular、jquery、knockout、bootstrap等时遇到很多问题…我将输入更改为文本:(.我也在寻找解决方案。我在使用IE Edge处理数字和日期时间字段的angular、jquery、knockout、bootstrap等时遇到很多问题…我将输入更改为文本:(.我也在寻找解决方案。这段代码在edge中对我有效。没有问题,只需在edge中声明js控制器中的$scope.md。它应该有效。我想这是因为它未定义。应该有效。上面的plunkr是使用edge生成的,所以至少IY在这里对我有效。您在浏览器中有任何控制台错误吗?如果这仍然是一个问题,那么c将输入转换为字符串,并对一个数字进行js验证,如果您上下按箭头键,您是否看到输入框下的数字在变化?此代码在edge中适用于我。没有问题,只需在edge中的js控制器中声明$scope.md。它应该可以工作。这是因为我猜它未定义。这应该可以工作。上面的plunkr是using edge至少在这里为我工作。您在浏览器中是否遇到任何控制台错误?如果仍然存在问题,请将输入转换为字符串,并对数字进行js验证,然后尝试如果您上下按箭头键,您是否看到输入框下的数字发生变化?