ng-repeat和ng-if设置td的值

时间:2017-12-04 05:16:40

标签: angularjs datatables

我正在尝试根据条件设置td值,这是我的代码

<td>
<span ng-init="tdValue=true;"></span>
<span ng-repeat="value in data_report" ng-if="fellow.F_Id==value.fellowship_id">
<span ng-init="tdValue=false;">{{value.Completed}}</span>
</span>
<span ng-if="tdValue">0</span>
</td>

在下面的代码中,我正在检查 1.如果条件匹配,则将值设置为value.completed 2.如果不将默认值保持为零

但我得到的结果是 14 0

14是value.completes,0是默认值(两个值都打印出来)

5 个答案:

答案 0 :(得分:1)

您必须定位嵌套的<span>,而不是转发器<span>本身:

<td>
  <span ng-init="tdValue=true"></span>
  <span ng-repeat="value in data_report">
     <span ng-if="fellow.F_Id==value.fellowship_id" ng-init="$parent.$parent.tdValue=false">{{value.Completed}}</span>
  </span>
  <span ng-if="tdValue==true">0</span>
</td>

另外

  • ng-repeatng-if都会创建嵌套的子范围,因此需要$parent.$parent来解决外部tdValue
  • ng-if必须由表达式组成,即ng-if="tdValue == true"

答案 1 :(得分:0)

您可以使用三元运算符

<td>
<span ng-init="tdValue=true;"></span>
<span ng-repeat="value in data_report" ng-if="fellow.F_Id==value.fellowship_id">
<span>{{tdValue==true?value.Completed:0}}</span>
</span>
</td>

答案 2 :(得分:0)

您可以改为删除此ng-init="tdValue=true;"并在控制器内声明它。

  

$ scope.tdValue = TRUE;

答案 3 :(得分:0)

试试这个

<td>

<span >{{selectedId}}</span>

</td>

这是您可以尝试的控制器代码。

$scope.selectedId=0;
for(var i=0;i<$scope.data_report.length;i++){
if($scope.fellow.F_Id==$scope.data_report[i].fellowship_id){
$scope.selectedId=$scope.data_report[i].fellowship_id;
break;
}
}

答案 4 :(得分:0)

然后你必须在你使用ng-repeat的span标签上应用if条件。

<td>
  <span ng-init="tdValue=true"></span>
  <span ng-repeat="value in data_report" ng-if="fellow.F_Id==value.fellowship_id">
     <span ng-init="$parent.$parent.tdValue=false">{{value.Completed}}</span>
  </span>
  <span ng-if="tdValue==true">0</span>
</td>