If statement angularjs if语句?

If 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} 不知道这是否

所以我正在浏览AngularJS的教程:

我在控制器中定义了一个数组,当我通过ng repeat{{feature.name}{{feature.description}循环时,我通过调用返回数组中的不同点

我不明白的是,假设数组中有第三个点叫做“重要性”,它是一个从1到10的数字。我不想在html中显示这个数字,但我想做的是,如果数组中的“重要性”数字是10比1,则对该特性应用不同的颜色

那么如何编写if语句来实现这一点:

i、 e

{{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>