gpt4 book ai didi

javascript - 在 angular.js 中,我可以在 $eval() 之前过滤一些东西吗?

转载 作者:行者123 更新时间:2023-11-30 17:13:42 25 4
gpt4 key购买 nike

我正在将 Angular.js 用于网络应用程序。我有一些数据要 $eval(),但问题是在我这样做之前,我需要用我正在使用的变量的名称替换字符串中的占位符。我写了一个过滤器来处理这个问题,但我不知道如何在字符串传递给 $eval() 之前运行过滤器。

这是我希望发生的事情的示例:

应用程序.js

$scope.newVariable=3;
$scope.test='2+[placeholder]';

index.html

<p>{{$eval(test|replace:'[placeholder]':'newVariable')}}</p>

我想要发生的是将“[placeholder]”替换为“newVariable”,然后将该新字符串传递到 $eval()。现在的写法,当我加载它时,页面就崩溃了。我已经单独测试过过滤器,所以我知道这不是问题所在。有没有办法在字符串被 $eval()ed 之前应用这个过滤器?

最佳答案

首先,$eval应该在您必须指定的范围内调用。

由于过滤器可以很容易地在 Angular 中链接起来,您可以尝试创建一个额外的过滤器,它将对您替换的表达式执行评估,然后将其显示出来。

例如,您的过滤器定义可能如下所示:

.filter('eval', function() {
return function(expr, scope) {
// Note how $eval is called for the passed in scope.
return scope.$eval(expr);
}
})

然后在您的 HTML 中:

{{ test | replace:'[placeholder]':'newVariable' | eval:this }}

请注意,提供给 eval 过滤器的 this 应该是 Controller 的 $scope

关于javascript - 在 angular.js 中,我可以在 $eval() 之前过滤一些东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26499490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com