我使用Angular.js作为网络应用。我有一些我想要$eval()
的数据,但问题是在我这样做之前,我需要用字符串中的占位符替换我使用的变量的名称。我编写了一个过滤器来处理这个问题,但是在将字符串传递给$eval()
之前,我无法弄清楚如何运行过滤器。
以下是我想要发生的事情的一个例子:
app.js
$scope.newVariable=3;
$scope.test='2+[placeholder]';
的index.html
<p>{{$eval(test|replace:'[placeholder]':'newVariable')}}</p>
我想要发生的是[&#39; [占位符]&#39;由&new;新变种&#39;替换为'newVariable&#39;然后将该新字符串传递给$eval()
。它现在的编写方式,当我加载页面时页面崩溃。我已经分别测试过滤器了,所以我知道这不是问题所在。有没有办法在字符串$eval()
编辑之前应用此过滤器?
答案 0 :(得分:2)
首先,应在必须指定的范围上调用$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 }}
请注意,提供给this
过滤器的eval
应该是控制器的$scope
。