Ссылка 1 .Вы должны определить вашу $scope.getBackgroundColor()
функцию в вашем контроллере, а не в шаблоне.
Также обратите внимание, что $scope
свойства и методы доступны в выражениях вашего шаблона без необходимости ставить перед ними префикс $scope
.Если вы добавляете к ним префикс $scope
, вы на самом деле пытаетесь получить доступ к $scope.$scope.someProperty
, которого не существует (если только вы не определяете их, но следует избегать определения свойства $scope
для $scope
, так как это приведет к генерациипутаница и сделать ваш код сложнее для понимания, отладки и обслуживания).
Ссылка 2 .Если вам это нужно на конкретном <td>
, просто поместите его туда, где вам нужно:
<tr ng-repeat="mount in msg.payload">
<th align="left" scope="row">{{mount.mount}}</th>
<td align="right">{{mount.size}}</td>
<td align="right">{{mount.used}}</td>
<td align="right">{{mount.available}}</td>
<td align="right"
ng-style="{backgroundColor: getBackgroundColor(mount.usedPercent)}"
>{{mount.usedPercent}}</td>
</tr>
Если вы действительно хотите определить someProperty
в шаблоне, вам определенно не следует делать это внутри ng-repeat
(потому что это означает, что вы перезаписываете его на каждой итерации ng-repeat
, и это довольно неэффективно).
Помните, однако, что определение свойств области действия в шаблоне усложнит поддержку вашего кода, если ваше приложение усложняется, а вы -это во многих местах;скоро вы не сможете понять, что и где определено:
{{getBackgroundColor = value => value <= 75 ? 'red' : value > 90 ? 'blue' : 'black'}}
<table>
<tr ng-repeat="mount in msg.payload">
...
<td ng-style="{backgroundColor: getBackgroundColor(mount.usedPercent)}">
{{mount.usedPercent}}</td>
</tr>
</table>