我想在 AngularJS 模板中做一个条件。我从 Youtube API 获取视频列表。有些视频是 16:9 的比例,有些是 4:3 的比例。
我想做出这样的条件:
if video.yt$aspectRatio equals widescreen then element's attr height="270px" else element's attr height="360px"
我正在使用ng-repeat. 不知道我应该怎么做这种情况:
ng-repeat
Angularjs(低于 1.1.5 的版本)不提供if/else功能。以下是您想要实现的目标的几个选项:
if/else
( 如果您使用的是 1.1.5 或更高版本,请跳转到下面的更新(#5) )
正如@Kirk 在评论中所建议的那样,最简洁的方法是使用三元运算符,如下所示:
<span>{{isLarge ? 'video.large' : 'video.small'}}</span>
ng-switch
可以使用类似下面的东西。
<div ng-switch on="video"> <div ng-switch-when="video.large"> <!-- code to render a large video block--> </div> <div ng-switch-default> <!-- code to render the regular video block --> </div> </div>
ng-hide
show`](https://docs.angularjs.org/api/ng/directive/ngShow)指令
或者,您也可以使用ng-show/ng-hide,但使用它实际上会渲染一个大视频和一个小视频元素,然后隐藏满足ng- hide条件的元素并显示满足ng-show条件的元素。因此,在每个页面上,您实际上将呈现两个不同的元素。
ng-show/ng-hide
ng- hide
ng-show
class`](https://docs.angularjs.org/api/ng/directive/ngClass)指令。
这可以如下使用。
<div ng-class="{large-video: video.large}"> <!-- video block goes here --> </div>
如果是真的,上面基本上会large-video为 div 元素添加一个 css 类video.large。
large-video
video.large
directive`](https://docs.angularjs.org/api/ng/directive/ngIf)
ng-if
在上述版本中,1.1.5您可以使用该ng-if指令。如果提供的表达式返回,这将删除元素,如果表达式返回false,则将 重新插入elementDOM true。可以如下使用。
1.1.5
false
element
true
<div ng-if="video == video.large"> <!-- code to render a large video block--> </div> <div ng-if="video != video.large"> <!-- code to render the regular video block --> </div>