在Javascript控制器中使用AngularJS表达式

在Javascript控制器中使用AngularJS表达式,javascript,angularjs,Javascript,Angularjs,是否有某种方法可以在控制器、服务或指令的上下文中进行评估 我很喜欢这样一个事实,即在混搭数据时,表达式非常优雅,尤其是带有可选键的深度嵌套对象 比如: $expression(“[foo.bar.bar,foo.bar.baz,foo.bar]|小写”,object)您可以将JS中的过滤器与服务一起使用: .controller('someCtrl', function ($filter, $scope) { $scope.lower = $filter('lowercase')('HE

是否有某种方法可以在控制器、服务或指令的上下文中进行评估

我很喜欢这样一个事实,即在混搭数据时,表达式非常优雅,尤其是带有可选键的深度嵌套对象

比如:


$expression(“[foo.bar.bar,foo.bar.baz,foo.bar]|小写”,object)

您可以将JS中的过滤器与服务一起使用:

.controller('someCtrl', function ($filter, $scope) {
    $scope.lower = $filter('lowercase')('HELLO, WORLD !');
    // -> $scope.lower will be 'hello, world !'
});
如果您不想使用筛选器,但要计算表达式(尽管我想不出任何好的理由),可以使用
$scope.$eval()


是的,我知道。但是我如何使用一个表达呢?我不确定我是否理解。请参阅我的最新答案。这就是你的意思吗?基本上,任何可能出现在视图中
{{}
中的内容都可以传递给
$eval()
(省略
{{{
}}
)。可能他的意思是这样的:我使用$scope。$eval使用表达式语法获取值,因为它避免了大量的isDefined/!=空测试..谢谢<代码>$scope.$eval
确实正是我想要的。正如@ScottWarren所说,它的语法比使用原始JS更优雅、更简单。AngularJS表达式是函数代码,不是语句。@Husky:你看了我的答案了吗?它解决了问题吗?
.controller('someCtrl', function ($scope) {
    $scope.someProp = 'HELLO, WORLD !';
    $scope.lower = $scope.$eval('someProp | lowercase');
    // -> $scope.lower will be 'hello, world !'
});