在 Angular JS 中动态应用 CSS 样式属性

2022-08-30 05:33:02

这应该是一个简单的问题,但我似乎找不到解决方案。

我有以下标记:

<div style="width:20px; height:20px; margin-top:10px; border:solid 1px black; background-color:#ff0000;"></div>

我需要将背景颜色绑定到示波器,所以我尝试了这个:

<div style="{width:20px; height:20px; margin-top:10px; border:solid 1px black; background-color:{{data.backgroundCol}};}"></div>

这不起作用,所以我做了一些研究并发现,但这不起作用,所以我尝试将动态部分取出,只是对样式进行硬编码,就像这样...ng-styleng-style

<div ng-style="{width:20px; height:20px; margin-top:10px; border:solid 1px black; background-color:#ff0000;}"></div>

这甚至不起作用。我是否误解了工作原理?有没有办法放入一个普通的样式属性,并让它插入值?ng-style{{data.backgroundCol}}


答案 1

ngStyle 指令允许您在 HTML 元素上动态设置 CSS 样式。

评估对象的表达式,其键是 CSS 样式名称,值是这些 CSS 键的相应值。由于某些 CSS 样式名称不是对象的有效键,因此必须用引号括起来。

ng-style="{color: myColor}"

您的代码将是:

<div ng-style="{'width':'20px', 'height':'20px', 'margin-top':'10px', 'border':'solid 1px black', 'background-color':'#ff0000'}"></div>

如果要使用作用域变量:

<div ng-style="{'background-color': data.backgroundCol}"></div>

下面是一个使用 的 fiddle 示例,下面是带有运行代码段的代码:ngStyle

angular.module('myApp', [])
.controller('MyCtrl', function($scope) {
  $scope.items = [{
      name: 'Misko',
      title: 'Angular creator'
    }, {
      name: 'Igor',
      title: 'Meetup master'
    }, {
      name: 'Vojta',
      title: 'All-around superhero'
    }

  ];
});
.pending-delete {
  background-color: pink
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller='MyCtrl' ng-style="{color: myColor}">

  <input type="text" ng-model="myColor" placeholder="enter a color name">

  <div ng-repeat="item in items" ng-class="{'pending-delete': item.checked}">
    name: {{item.name}}, {{item.title}}
    <input type="checkbox" ng-model="item.checked" />
    <span ng-show="item.checked"/><span>(will be deleted)</span>
  </div>
  <p>
    <div ng-hide="myColor== 'red'">I will hide if the color is set to 'red'.</div>
</div>

答案 2

最简单的方法是为样式调用函数,并让函数返回正确的样式。

<div style="{{functionThatReturnsStyle()}}"></div>

在您的控制器中:

$scope.functionThatReturnsStyle = function() {
  var style1 = "width: 300px";
  var style2 = "width: 200px";
  if(condition1)
     return style1;
  if(condition2)
     return style2;
}