【发布时间】:2015-02-19 19:18:40
【问题描述】:
Angular 文档建议使用 Angular 服务 Angular 表达式:
改为在从表达式调用的函数中使用 $window 和 $location 等服务。此类服务提供对全局变量的可模拟访问。
– https://docs.angularjs.org/guide/expression#context
但是,默认情况下,这些服务似乎不在视图范围内,例如
{{$location || 'Undefined'}}
将产生“未定义”。
如果我想从一个视图访问$location服务,我需要将它注入到作用域中吗?
/* some controller */ function ($scope, $location) {
$scope.$location = $location;
}
【问题讨论】:
-
是的。通过 $scope 向视图公开方法和属性。虽然有点反模式,因为您将视图与 $location 紧密耦合。你应该抽象成一个方法,或者更好的是,一个指令。
-
这是一个“出于好奇”而不是实际的问题。该文档在这方面有点误导。这意味着 $window 服务在表达式上下文中可用。
-
不确定是不是...但无论哪种方式,要“坚持” Angular 中的可测试模式,您可能应该使用对控制器的方法调用或指令来封装您的内容正在努力做。我会尝试回答..
标签: javascript angularjs