Javascript 角度JS组件绑定不适用于IE11上的按钮类型
我在IE11上有一个问题,按钮的AngularJS1.5.6组件。我有一个名为my button的button组件,button type在名为button type的绑定中传递: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
<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}}”