我有以下代码,它是一个填充检索数据的离子列表。我试图根据状态响应将颜色编码为不同的颜色。
<ion-list>
<ion-item ng-repeat="test in tests" class ="item-text-wrap" style="height:40%">
<a href="#/tab/test/test-detail/{{test.ID}}">
<div style="width:80%; float:left;">
<table>
<span ng-if="test.Status == 'Cleared'" ng-style="color:green">
<tr>
<td> <strong>Remark: </strong></td>
<td style="padding:3px">{{test.Remark}}</td>
</tr>
<tr>
<td><strong>Status:</strong></td>
<td style="padding:3px">{{test.Status}}</td>
</tr>
</span>
</table>
</div>
</ion-item>
</ion-list>
但表格数据的颜色仍然没有变化。可能是什么问题呢?我错误地使用ng-if和ng-style?谢谢!
更新1:使用@SSH提供的见解,我使用以下代码更新了我的控制器:
HTML:
<ion-list>
<ion-item ng-repeat="test in tests" class ="item-text-wrap" style="height:40%">
<a href="#/tab/test/test-detail/{{test.ID}}">
<div style="width:80%; float:left;">
<table>
<span ng-style="calculateStyle()">
<tr>
<td> <strong>Remark: </strong></td>
<td style="padding:3px">{{test.Remark}}</td>
</tr>
<tr>
<td><strong>Status:</strong></td>
<td style="padding:3px">{{test.Status}}</td>
</tr>
</span>
</table>
</div>
</ion-item>
</ion-list>
控制器:
$scope.calculateStyle = function() {
var style={}
console.log('test3: '+$scope.tests.Status);
console.log('test6: '+$scope.Status);
if ($scope.Status == 'Cleared') {
style.color='green';
console.log('Viola');
}
else{
console.log('GG');
}
return style;
}
})
但是控制器中返回的结果仍然是null / undefined。 test3和test6让我回答未定义&#39;而If语句让我回答了GG&#39;。可能是什么问题呢?谢谢!
更新2:使用SSH答案,我修改为以下内容:
HTML:
<span ng-style="calculateStyle(test)">
控制器:
$scope.calculateStyle = function(test) {
var style={}
if (test.Status == 'Cleared') style.color='green';
return style;
}
但是控制器上的测试变量仍未定义。使用$ scope.test也不起作用。可能是什么问题?
答案 0 :(得分:2)
是的,你确实错误地使用了它。您需要传递一个由样式名称和条件组成的对象:
<span ng-style="{color:(test.Status == 'Cleared')?'green'}">
或者更好地使用控制器中的函数来计算和返回样式对象,以保持模板清洁:
<span ng-style="calculateStyle(test)">
然后在您的控制器定义中
$scope.calculateStyle = function(test) {
var style={}
if (test.Status == 'Cleared') style.color='green';
return style;
}