在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 !'
});