AngularJS中的状态过滤是什么?

AngularJS中的状态过滤是什么?,第1张

AngularJS中的状态过滤是什么?

“状态”是指在整个应用程序中设置的变量/属性/等。这些值有可能在任何给定时间改变。文档说过滤器不应该依赖于外部“状态”。过滤器需要了解的所有内容都应在过滤时作为参数传递,然后过滤器应具有进行过滤并返回结果所需的一切。查看文档中的演示,您将在“状态过滤器”,该过滤器依赖于用于进行过滤的服务。该服务值可能会在一个

$digest
周期内更改,因此
$stateful
必须在过滤器上设置该属性,以便Angular再次运行过滤器以确保依赖项未更改状态,这会更改过滤器的结果。

因此,所有“状态”应在参数中,如下所示:

<p>{{myData | multiplyBy:multiplier}}</p>

使用类似的过滤器:

.filter('multiplyBy', function() {  function filter(input, multiplier) {    return input * multiplier;  }  return filter;})

如果数据或参数更改,则过滤器将再次运行。

stateful
版本将是这样的(不推荐!):

<p>{{myData | myFilter}}</p>

过滤器从外部来源获取所需信息:

.filter('myFilter', ['someDependency', function(someDependency) {  function filter(input) {    // let's just say `someDependency = {multiplier: 3}`    return input * someDependency.multiplier;  }  filter.$stateful = true;  return filter;}])

在该示例过滤器中,

someDependency.multiplier
应该将其作为参数传递给过滤器(如第一个示例中所示),而不是作为过滤器的依赖项。

为了进一步说明问题:如果您调用了如下函数:

foo(20)
并获得的结果
40
,则重复该过程应获得相同的结果。如果您
foo(20)
再次打来电话
92
,那会很混乱,对吗?假设
foo
不是一个用于返回随机值的函数,那么它每次返回不同数字的唯一方法是,它是否基于隐藏状态(内部发生某些变化,而不是作为参数传递)而执行不同的 *** 作。每次给定相同参数时函数将返回相同值的想法称为“幂等”。

注意:

$stateful
在Angular 1.3中似乎是新的



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5642107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存