在angularjs中使用$ eval和$ parse的时间和地点。
eReaderBook.controller("mainCtrl",function($scope){
$scope.test = "asdasd";
var s = "{{test}}";
console.log($scope.$eval("s"))
})
为什么console.log返回undefined。
答案 0 :(得分:0)
eReaderBook.controller("mainCtrl",function($scope){
$scope.test = "asdasd";
var s = "test";
console.log($scope.$eval(s))
})
与$scope.$eval
不同, eval()
已经预期AngularJS的公认格式。
此外,不需要eval中的"
答案 1 :(得分:0)
$ parse是一个Angular服务,它将表达式转换为函数。然后可以调用该函数并传递上下文(通常是作用域)以检索表达式的值。
$ eval是一个范围方法,它在当前范围上执行表达式并返回结果。
有关更多信息,请参阅:
答案 2 :(得分:0)
由于以下原因,您未定义。
$ eval方法适用于范围变量。这里你的变量s
只是一个普通的javascript变量。但是,如果您尝试按如下方式记录'test'
。您将看到正在打印的正确值。
console.log($scope.$eval("test"))
如果你试着没有引用如下
$scope.$eval(s)
然后你会找到
语法错误:令牌' {'无效密钥
因为s的值是{{test}}。因此,eval将尝试从范围中找到$ scope。{{test}}的值,该值无效且语法错误。
$scope.$eval('a+b')
以上的内容意味着$scope.a+$scope.b
所以简单地说,你可以在有角度的绑定块{{ expression }}
内写的那些表达式,你也可以在$ eval 方法中写为字符串。
{{WHAT EVER YOU CAN WRITE HERE}}
$scope.$eval('YOU CAN WRITE HERE ALSO');