jim*_*ney 5 angularjs angularjs-1.7
AngularJS 1.2 和 1.6 之间发生了一些事情来颠倒顺序ng-click并ng-change触发。
我做了一个 plunk 来说明它:http ://plnkr.co/edit/XgbgLSuP1znhWszeyiHd? p= preview
此页面的默认设置是使用Angular 1.2.28. 在这种情况下,如果您更改示例中的单选按钮,您将看到 click 事件在 change 事件之前触发。
如果您随后切换注释以便使用 Angular 1.6.10,您将看到 change 事件现在在 click 事件之前触发。
在 AngularJS 的开发过程中发生了什么导致这种情况,有没有办法在使用更新版本的 AngularJS 的同时保留以前的行为?
非常感谢您提供的任何帮助!
编辑:我可能应该说为什么这很重要。我希望能够在变量更改之前检查它的值,以查看是否应该允许更改。我能够ng-click在 AngularJS 1.2 上做到这一点,但是因为ng-change它首先在 AngularJS 1.6 上被触发,所以在我决定是否应该继续之前已经进行了更改。如果您对我如何使用 AngularJS 1.6 实现这一点有其他想法,我很想听听他们的意见。
以下是不同版本的行为总结:
\n\n AngularJS V1.2 CLICK handler fires first \n AngularJS V1.3 CHANGE handler fires first\n AngularJS V1.4 CHANGE handler fires first\n AngularJS V1.5 CHANGE handler fires first\n AngularJS V1.6 CHANGE handler fires first\n AngularJS V1.7 CLICK handler fires first\nRun Code Online (Sandbox Code Playgroud)\n\n依赖于元素上的事件顺序的代码缺乏鲁棒性。只编写健壮的代码。避免依赖于库或浏览器不受保证的功能的脆弱代码。
\n\n使用ng-disabled单选按钮上的指令来防止选择。
\n\n\n输入[单选]和输入[复选框]
\n\n由于656c8f和
\n\n \ninput[radio]input[checkbox]监听“change”事件而不是“click”事件。大多数应用程序不应受到影响,因为“单击”发生后浏览器会自动触发“更改”。
\n\n修复(输入):收听广播/复选框 \xe2\x80\xa6 的“更改”而不是“单击”
\n\n\xe2\x80\xa6ng模型
\n\n\n\n
input[radio]和input[checkbox]监听更改事件而不是单击事件。这修复了在输入上触发\n更改事件的第3方库的问题,例如Bootstrap 3自定义复选框/单选按钮\n切换。它还可以更轻松地防止可能导致复选框/单选更改的特定事件,例如单击事件。以前,这很困难,因为必须在输入指令的单击处理程序之前注册自定义单击处理程序。
\n\n广播和复选框可能会监听单击,因为 IE8 已经破坏了对监听更改的支持,请参阅http://www.quirksmode.org/dom/events/change.html
\n\n \n
| 归档时间: |
|
| 查看次数: |
1293 次 |
| 最近记录: |