当前位置: 首页 > 面试题库 >

angularjs ng-click默默地吃掉错误

姜嘉良
2023-03-14
问题内容

如果我有这样的ng-click:ng-click =“ buggy()”并单击,控制台上不会生成任何错误消息。

这使得调试起来有些棘手。

为什么不生成错误消息?我能做什么?


问题答案:

角度表达式

实际上,这不是什么特别的ng-click,它是 角度表达式 的默认行为。

buggy()不使用常规javascript进行评估。用评估$parse

$parse 计算表达式并返回将在范围内运行的函数。

$parse 仅当表达式无效时才记录错误。

角度表达式评估是宽容的,我想不出任何方法通过它。

为什么表达式是宽容的?

Angular表达式允许未定义和null的基本原理与数据绑定有关。当绑定变量被编译到DOM中时,它们最初可能是未定义的或为null-
一个真正清晰的例子是绑定变量依赖于promise。Angular团队决定,与其达成承诺之前,不弹出错误消息,不如继续静默进行。

从Angular指南到表达式:

如果未定义a,则什么也不显示比抛出异常更有意义(也许我们正在等待服务器响应,并且它将很快被定义)。如果表达式评估不能原谅,我们就必须编写会使代码混乱的绑定,例如:{{((a
|| {})。b || {})。c}}

另请参见:https :
//groups.google.com/forum/m/#!topic/
angular/
HRVOUKEHLFw

角度表达式:

表达式是类似于JavaScript的代码段,通常放置在诸如{{expression}}之类的绑定中。表达式由 $ parse
服务处理。表达式通常使用过滤器进行后期处理,以创建更加用户友好的格式。

角表达式与JS表达式

将Angular视图表达式视为JavaScript表达式可能很诱人,但这并不是完全正确的,因为Angular不使用JavaScript
eval()来评估表达式。您可以将Angular表达式视为具有以下区别的JavaScript表达式:

  • 属性评估 :所有属性的评估均针对进行评估的范围,这与JavaScript中针对全局窗口评估表达式的JavaScript不同。

  • 宽恕
    :表达式评估宽容为undefined和null,这与JavaScript中的情况不同,在JavaScript中,尝试评估未定义的属性可能会生成ReferenceError或TypeError。

  • 没有控制流语句 :您不能在角度表达式中执行以下任何操作:条件,循环或抛出。



 类似资料:
  • 我正在为餐厅创建一个类似just eats的送餐平台。我能把Uber eats API集成到我的平台上,让Uber完成从餐厅到客户的快递部分吗?

  • 本文向大家介绍Vue Router去掉url中默认的锚点#,包括了Vue Router去掉url中默认的锚点#的使用技巧和注意事项,需要的朋友参考一下 hash模式url vue-router默认hash模式——使用URL的hash来模拟一个完整的URL,于是当URL改变时,页面不会重新加载。 如果不想要这种默认的hash模式,可以用路由的history模式,这种模式充分的利用history.pu

  • 什么是Locale Locale是一组描述世界上某一特定区域文本格式和语言习惯的设置的集合。locale名通常由三个部分组成:第一部分,是一个强制性的,表示语言的缩写,例如"en"表示英文或"zh"表示中文。第二部分,跟在一个下划线之后,是一个可选的国家说明符,用于区分讲同一种语言的不同国家,例如"en_US"表示美国英语,而"en_UK"表示英国英语。最后一部分,跟在一个句点之后,是可选的字符集

  • 在阅读https://developer.android.com/kotlin/coroutines时,我偶然发现了以下警告: 警告:启动和异步处理异常的方式不同。因为async希望最终调用在某个时刻等待,所以它保留异常并作为等待调用的一部分重新抛出它们。这意味着如果您使用await从常规函数启动新的coroutine,您可能会静默地删除异常。这些被删除的异常不会出现在崩溃度量中,也不会在Logc

  • 本文向大家介绍如何禁用掉a标签的默认事件?相关面试题,主要包含被问及如何禁用掉a标签的默认事件?时的应答技巧和注意事项,需要的朋友参考一下 a onclick="prevent" function prevent(e) { e.preventDefault(); }

  • 问题内容: 我以前从未进行过任何认真的Java编码,但是我根据现有技能(Delphi和C#)学习了语法,库和概念。我很难理解的一件事是,我看到如此多的代码在像这样的情况下无声地消耗了异常: 我遇到的几乎每个Java文章和项目中都有类似的代码。根据我的知识,这是非常糟糕的。几乎应该总是将异常转发给外部上下文,如下所示: 在大多数情况下,异常应最终在属于底层框架(例如Java Swing)的最外层循环