If statement angularjs if语句?
所以我正在浏览AngularJS的教程: 我在控制器中定义了一个数组,当我通过ng repeat{{feature.name}{{feature.description}循环时,我通过调用返回数组中的不同点 我不明白的是,假设数组中有第三个点叫做“重要性”,它是一个从1到10的数字。我不想在html中显示这个数字,但我想做的是,如果数组中的“重要性”数字是10比1,则对该特性应用不同的颜色 那么如何编写if语句来实现这一点: i、 eIf statement angularjs if语句?,if-statement,angularjs,If Statement,Angularjs,所以我正在浏览AngularJS的教程: 我在控制器中定义了一个数组,当我通过ng repeat{{feature.name}{{feature.description}循环时,我通过调用返回数组中的不同点 我不明白的是,假设数组中有第三个点叫做“重要性”,它是一个从1到10的数字。我不想在html中显示这个数字,但我想做的是,如果数组中的“重要性”数字是10比1,则对该特性应用不同的颜色 那么如何编写if语句来实现这一点: i、 e {{feature.description} 不知道这是否
{{feature.description}
不知道这是否正确,但这正是我想做的我不认为有
if
语句可用。
出于您的造型目的,可以使用ng class
<p ng-class="{important: feature.importance == 10 }">
ng开关也很方便
--更新--
看看:
angular1.2.0RC似乎有ng if支持。ng类可能是解决您问题的最佳答案,但AngularUI有一个“if”指令:
搜索:
从DOM中完全删除元素,而不是仅仅隐藏它
我使用“ui if”来决定是否应相对于当前月份将数据值呈现为标签或输入:
<tbody id="allocationTableBody">
<tr ng-repeat="a in data.allocations">
<td>{{a.monthAbrv}}</td>
<td ui-if="$index < currentMonth">{{a.amounts[0]}}</td>
</tr>
</tbody>
{{a.monthAbrv}}
{{a.amounts[0]}
您也可以尝试下面这行代码
<div class="{{is_foo && foo.bar}}">
如果is_foo为true,则显示foo.bar。如果优先级为标签,则可以创建一个开关过滤器以在ng类内部使用,如前面的SO答案所示:(对于开关过滤器代码)
我认为答案需要更新
以前,您可以使用AngularUI项目中的ngIf指令(如果您仍然想下载它,则使用代码),但坏消息是它不再被维护
好消息是,它已被添加到官方AngularJS回购协议()中,很快将在下一个版本中提供
Foo-bar
不仅会隐藏DIV
元素,还会将其从DOM中删除(当某个内容不正确时)。第一个是一个指令,用于评估某个内容是否只应在DOM中出现一次,并向页面添加不监视侦听器:
angular.module('setIf',[]).directive('setIf',function () {
return {
transclude: 'element',
priority: 1000,
terminal: true,
restrict: 'A',
compile: function (element, attr, linker) {
return function (scope, iterStartElement, attr) {
if(attr.waitFor) {
var wait = scope.$watch(attr.waitFor,function(nv,ov){
if(nv) {
build();
wait();
}
});
} else {
build();
}
function build() {
iterStartElement[0].doNotMove = true;
var expression = attr.setIf;
var value = scope.$eval(expression);
if (value) {
linker(scope, function (clone) {
iterStartElement.after(clone);
clone.removeAttr('set-if');
clone.removeAttr('wait-for');
});
}
}
};
}
};
});
第二个是一个指令,在没有监视侦听器的情况下,只对元素有条件地应用属性一次:
i、 e
angular.module('setAttr',[])。指令('setAttr',function(){
返回{
限制:“A”,
优先:100,
链接:功能(范围、要素、属性){
if(attrs.setAttr.indexOf('{')!=-1&&attrs.setAttr.indexOf('}')!=-1){
//您可以只使用angular.isObject(scope.eval(attrs.setAttr))进行上述操作,但我需要这样做
var数据=范围$eval(attrs.setAttr);
角度.forEach(数据,函数(v,k){
if(角度等深线(v)){
if(v.value和v.condition){
元素属性(k,v值);
元素removeAttr('set-attr');
}
}否则{
元素属性(k,v);
元素removeAttr('set-attr');
}
});
}
}
}
});
当然,您可以使用内置在angular中的动态版本:
<div ng-class="{ 'myclass' : item.iscool }"></div>
您还可以使用angularjs添加的新ng if,它基本上取代了angularui团队创建的ui。这些将有条件地从DOM中添加和删除内容,并添加监视侦听器以保持评估:
<div ng-if="item.iscool"></div>
实际上在Angular 1.2.0中有一个三元运算符
<p style="{{feature.importance == 10 ? 'color:red' : ''}}">{{feature.description}}</p>
{{feature.description}
同样有效的是:
<span>{{ varWithValue || 'If empty use this string' }}</span>
{{varWithValue | |'如果为空,请使用此字符串'}}
您可以这样做:ng class=“border{{{4>x}”
。上面的语法没有写出来。嗨,我想答案需要更新,看看我在底部的帖子。真实iif:
<div ng-class="{ 'myclass' : item.iscool }"></div>
<div ng-if="item.iscool"></div>
<p style="{{feature.importance == 10 ? 'color:red' : ''}}">{{feature.description}}</p>
<span>{{ varWithValue || 'If empty use this string' }}</span>