AngularJS - 如何用 ng 样式替换框阴影的颜色?

Posted

技术标签:

【中文标题】AngularJS - 如何用 ng 样式替换框阴影的颜色?【英文标题】:AngularJS - how to replace colour for a box shadow with ng-style? 【发布时间】:2018-04-21 00:47:22 【问题描述】:

我正在使用 Angular 1.5 编写应用程序。

我正在尝试用动态颜色在我的元素上放置一个盒子阴影。

这是我迄今为止尝试过的:

  <div
    item="item"
    ng-style=" 'box-shadow': 5px 0px 0px 0px  item.colour  inset; "
    ng-repeat="item in vm.items">
</div>

浏览器不断抛出这个错误: 错误:[$parse:lexerr] Lexer Error: Unexpected next character at column 32-32 [#] in expression [ 'box-shadow': 5px 0px 0px 0px #800000 inset; ]。

item.colour 是一个包含十六进制值的字符串。

我也试过这个:

ng-style=" 'box-shadow': 5px 0px 0px 0px item.colour inset; "

它也不起作用。

如何为这种情况编写我的 ng 样式表达式?

【问题讨论】:

【参考方案1】:

ng-style 属性中,您可以编写一个非常类似于 javascript 的表达式,也就是说,您可以像 javascript 一样连接字符串。

例如:

ng-style=" 'box-shadow': '5px 0px 0px 0px ' + item.colour + ' inset' "

更新 1 工作 sn-p

.box 
  width: 100px;
  height: 100px;
  background-color: grey;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.js"></script>
<div ng-app ng-init="item =  colour: '#800000'">
  <div class="box" ng-style=" 'box-shadow': '5px 0px 0px 0px ' + item.colour + ' inset' ">
  </div>
</div>

【讨论】:

它没有抛出错误,但没有显示颜色。 '#800000' @user1261710 我不知道你的意思,但我已经用一个有效的 sn-p 更新了我的答案并且它正在工作。这是一个嵌入的红色阴影作为你的例子。 嗨,我忘记了 0px 和颜色之间的空格是我的错。有效,谢谢!【参考方案2】:

您可以通过以下方式编写您的 html

<div
    item="item"
    ng-style="GetBoxShadowStyle(item)"
    ng-repeat="item in vm.items">
</div>

你的控制器应该有如下方法:

$scope.GetBoxShadowStyle = function (item) 
   var boxShadowStyleVal = '5px 0px 0px 0px ' + item.colour + ' inset' ;
   return  "box-shadow": boxShadowStyleVal  ;
;

【讨论】:

以上是关于AngularJS - 如何用 ng 样式替换框阴影的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

ng1中 如何用双向绑定 实现单向绑定的初始时不显示双括号效果?

如何用一个条目替换另一个 MS Access 报告?

带有条件表达式的 AngularJS ng 样式

怎么把AngularJS开发的页面迁移到微信小程序

angularJS 在 ng-repeat 中使用构造函数,但不会应用 css 样式和位置?

如何用angular-ui-router构建一个后台管理系统