首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >双Angular2模板问题(!!+)

双Angular2模板问题(!!+)
EN

Stack Overflow用户
提问于 2016-03-30 08:39:15
回答 1查看 152关注 0票数 1

几个小时以来,我一直在用这个问题困扰我,但我现在很确定这是一个Angular2问题,在某个地方。

场景:我从我的PHP中得到了一些"isLiked": "1"。由于JSON,Javascript将tinyint理解为string而不是Booleans,所以我一直使用好的ol‘!!+isLiked将其转换为布尔值。

在我的Angular2模板中,我需要这样做:

<i class="glyphicon {{ (!(!!+post.isLiked) ) ? 'glyphicon-heart-empty' : 'glyphicon-heart' }}"></i>

使用下划线模板时,这段代码在主干中可以很好地工作。但是,Angular2似乎做了一些改变方式的事情!!+"0“被评估了!

在Chrome控制台中:!!+"0"返回false

在Backbone+Underscore中:模板中的<% !!+"0" %>显示false

在Angular2中:模板中的{{ !!+"0" }}显示true

这里是http://plnkr.co/E3YGYeQ5ZZIRh8JxsUN6的游乐场。

false来自于index.html内部的一个简单的Javascript document.write(!!+"0"),在index.html做任何事情之前。

truesrc/app.ts模板中。

我漏掉了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-30 08:42:29

角模板语法不支持完整的JavaScript语法。只需将代码移动到函数中,然后调用它即可。

代码语言:javascript
运行
复制
<i class="glyphicon  {{ truthyCheck(+post.isLiked) ? 'glyphicon-heart-empty' : 'glyphicon-heart'  }}">
代码语言:javascript
运行
复制
class MyComponent {
  trutyCheck(value):boolean {
    return !(!!+post.isLiked) ;
  }
}

柱塞实例

另请参阅

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36303715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档