AngularJS:为ngStyle应用过滤器

AngularJS:为ngStyle应用过滤器,angularjs,Angularjs,大家好 我在理解AngularJS方面有问题。我可以在ngStyle指令中使用自定义过滤器吗?当我更改输入中的值(但它更改标记中的值)时,为什么不能同时更改span标记的不透明度?如何在不直接使用控制器作用域的情况下实现此行为 我的原始代码: HTML: 我在JSFiddle的代码:回答一般问题,是的,通常可以在通用角度表达式中使用用户创建的过滤器。由于解析错误(可能是角度分析器中的错误),您可能在使用ng attr时遇到问题。您仍然可以使用ng attr中的过滤器 <span ng-st

大家好

我在理解AngularJS方面有问题。我可以在ngStyle指令中使用自定义过滤器吗?当我更改输入中的值(但它更改标记中的值)时,为什么不能同时更改span标记的不透明度?如何在不直接使用控制器作用域的情况下实现此行为

我的原始代码: HTML:


我在JSFiddle的代码:

回答一般问题,是的,通常可以在通用角度表达式中使用用户创建的
过滤器。由于解析错误(可能是角度分析器中的错误),您可能在使用
ng attr
时遇到问题。您仍然可以使用
ng attr
中的过滤器

<span ng-style="{ 'opacity': (slider | opacity) }">TEXT</span>
也可以使用直接设置样式

<span style="opacity: {{slider|opacity}}">TEXT</span>


无论哪种解决方案更好,主要取决于您计划在哪里重复使用东西。过滤器可用于所有
范围
s,但此过滤器可能仅适用于给定的控制器。不要忘记,重用也可以通过指令(可以有控制器)来完成。

为什么要使用
ngStyle
而不是
ngClass
?因为我不能用0.1、0.2、…、1.0的不透明度值来创建十个类
<span ng-style="{ 'opacity': (slider | opacity) }">TEXT</span>
<span ng-style="sliderStyle">TEXT</span>
<span style="opacity: {{slider|opacity}}">TEXT</span>
app.filter('opacity', function () {
    return function (input) {
       return 0.1 * input;
    };
});