加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何从ng-bind {{}}角度表达式调试/转储值?

发布时间:2020-12-17 08:11:57 所属栏目:安全 来源:网络整理
导读:有没有一个很好的方法来转储或检查表达式的结果?有时当我做 {{some_expression}} 没有显示在该表达式的结果应该显示的页面上。如何确定表达式是否返回null,未定义或空字符串? 如果它是一个普通的对象,像这样,它将显示一个很好的程序员友好的对象的表示
有没有一个很好的方法来转储或检查表达式的结果?有时当我做
{{some_expression}}

没有显示在该表达式的结果应该显示的页面上。如何确定表达式是否返回null,未定义或空字符串?

如果它是一个普通的对象,像这样,它将显示一个很好的程序员友好的对象的表示,这是伟大的:

{{ {'a': 1} }}

但是,如果您尝试检查评估为null,undefined或”的表达式,它们彼此无法区分!

{{null}}
{{undefined}}
{{''}}

那么你怎么知道是哪一个?

我尝试使用JSON.stringify:

{{ JSON.stringify(null) }}

但是JSON似乎从Angular表达式中不可用,因为它是一个来自窗口的方法,而不是范围的属性(参见related question about accessing methods from window)。

我尝试使用typeof:

typeof {}: {{ typeof {'a': 1} }}

但是会导致错误:

Error: [$parse:syntax] Syntax Error: Token '{' is an unexpected token at column 9 of the expression [ typeof {'a': 1} ] starting at [{'a': 1} ].

那么如何使用JSON.stringify(…或console.log)这样的方式将值转储到模板中呢?

一般来说,除了试错之外,还有一个很好的方法来调试角度表达式?由于expressions号角度如此“宽恕”,似乎并没有引起错误;他们只是默默地吞下错误并返回未定义:

In JavaScript,trying to evaluate undefined properties generates
ReferenceError or TypeError. In Angular,expression evaluation is
forgiving to undefined and null.

但是没有看到某种错误信息,你怎么知道Angular的某些表达有什么麻烦呢?

您可以添加自定义过滤器进行调试:
app.filter('debug',function() {
  return function(input) {
    if (input === '') return 'empty string';
    return input ? input : ('' + input);
  };
});

用法:

{{ value | debug }}

演示:http://plnkr.co/edit/U44BCjBhgsFedRkHASlc?p=preview

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读