几个小时以来,我一直在用这个问题困扰我,但我现在很确定这是一个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做任何事情之前。
true在src/app.ts模板中。
我漏掉了什么吗?
发布于 2016-03-30 08:42:29
角模板语法不支持完整的JavaScript语法。只需将代码移动到函数中,然后调用它即可。
<i class="glyphicon {{ truthyCheck(+post.isLiked) ? 'glyphicon-heart-empty' : 'glyphicon-heart' }}">class MyComponent {
trutyCheck(value):boolean {
return !(!!+post.isLiked) ;
}
}柱塞实例
另请参阅
https://stackoverflow.com/questions/36303715
复制相似问题