如何在AngularJS中的数据绑定中添加条件?

时间:2014-06-30 16:51:30

标签: angularjs

我想做以下事情:

<div>
    <div ng-repeat="row in test.active">
        <div>{{ row.id }}</div>
        <div>
            {{ if (row.testTypeId == 1) { test.exams.dataMap[row.examId].name; } }}
            {{ if (row.testTypeId == 2) { test.topics.topicNameMap[row.topicId] } }}
        </div>
    </div>
</div>

然而,{{}}内部的{{}}给出了错误。还有其他方法可以让这项工作吗?

4 个答案:

答案 0 :(得分:7)

@ jack.the.ripper是对的。将逻辑移动到$ scope中的函数并调用它。

$scope.name = function (row) {
  if (row.testTypeId == 1) {
    return test.exams.dataMap[row.examId].name;
  } else {
    return '';
  }
}

在HTML中:

{{ name(row) }}

答案 1 :(得分:4)

三元运营商当然有效,plnkr

{{ (row.testTypeId == 1) ? test.exams.dataMap[row.examId].name : '' }}
{{ (row.testTypeId == 2) ? test.topics.topicNameMap[row.topicId] : '' }}

答案 2 :(得分:2)

您可以使用ng-show执行此操作:

<div>
    <div ng-repeat="row in test.active">
        <div>{{ row.id }}</div>
        <div ng-show="row.testTypeId == 1">
            {{test.exams.dataMap[row.examId].name }}
        </div>
        <div ng-show="row.testTypeId == 2">
            {{ test.topics.topicNameMap[row.topicId] }}
        </div>
    </div>
</div>

答案 3 :(得分:0)

为什么需要在数据绑定本身?你不能只使用ng-if指令吗?

<div ng-if="row.testTypeId == 1">stuff</div>
<div ng-if="row.testTypeId == 2">otherstuff</div>