Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度JS组件绑定不适用于IE11上的按钮类型_Javascript_Angularjs_Internet Explorer - Fatal编程技术网

Javascript 角度JS组件绑定不适用于IE11上的按钮类型

Javascript 角度JS组件绑定不适用于IE11上的按钮类型,javascript,angularjs,internet-explorer,Javascript,Angularjs,Internet Explorer,我在IE11上有一个问题,按钮的AngularJS1.5.6组件。我有一个名为my button的button组件,button type在名为button type的绑定中传递: <form role="form"> <my-input label="Firstname" placeholder="Enter first name"></my-input> <my-input labe

我在IE11上有一个问题,按钮的AngularJS1.5.6组件。我有一个名为my button的button组件,button type在名为button type的绑定中传递:

<form role="form">
  <my-input label="Firstname" placeholder="Enter first name"></my-input>
  <my-input label="Lastname" placeholder="Enter last name"></my-input>
  <my-button label="Reset" button-type="reset" on-click="$ctrl.performClick(action)"></my-button>
  <my-button label="Submit" button-type="submit" on-click="$ctrl.performClick(action)"></my-button>
</form>

我的按钮组件的HTML:

<button class="btn btn-default" type="{{$ctrl.buttonType}}" ng-click="$ctrl.click()">{{$ctrl.label}}</button>
{{$ctrl.label}
我抢走了我的发行物:

问题是,在IE11上,按钮类型总是设置为“提交”,就像您在捕获IE11 DOM中看到的那样:

例如,在Firefox上,按钮类型是正确的,正如您在Firefox DOM的捕获中所看到的:

所有这些都会导致我的angular应用程序在IE中出现功能错误,因为在IE中,当用户编辑表单并按enter键时,会调用重置操作,而它应该调用提交操作


该漏洞很容易被复制:在IE和Firefox上启动plunker,按F12显示控制台,开始编辑表单并按enter键,在IE11上按enter键时,控制台中的结果为“要求重置”,而在Firefox上,结果为预期结果:“要求提交”


我通过将
type=“{{$ctrl.buttonype}}}”替换为
ng attr type=“{{{$ctrl.buttonype}}”

来解决我的问题,就像angular的IE兼容性文档():”中所说的那样,对于按钮的类型属性,使用ng attr type标记而不是type=“{someExpression}”。如果使用后者,Internet Explorer会在Angular有机会插入表达式之前用type=“submit”覆盖该表达式

我通过将
type=“{{{$ctrl.buttonype}}}”
替换为
ng attr type=“{{{$ctrl.buttonype}}”