如何在视图表达式中访问 Angular 服务

How to access Angular service in a view expression?

本文关键字:访问 Angular 服务 表达式 视图      更新时间:2023-09-26
Angular

文档建议使用 Angular 服务 Angular 表达式:

而是在从表达式调用的函数中使用 $window 和 $location 等服务。此类服务提供对全局变量的可模拟访问。

– https://docs.angularjs.org/guide/expression#context

但是,默认情况下,这些服务似乎不在视图范围内,例如

{{$location || 'Undefined'}}

将产生"未定义"。

如果要从视图访问$location服务,是否需要将其注入范围?

/* some controller */ function ($scope, $location) {
    $scope.$location = $location;
}

这里最好的办法是在控制器方法调用或指令中封装您尝试执行的操作。例如,如果要将当前 URL 引入视图,则可能应该执行以下操作。

视图

<p>{{ CurrentUrl }}</p>

控制器

(function(app){
    app.controller("myController",["$scope","$location",function($scope,$location){
        $scope.CurrentUrl = $location.$$path; // or whatever is most useful to display
    }]);
})(myApp);

这意味着您遵循 Angular 的 IOC 模式,而不是将"$location"紧密耦合到您的视图或控制器。

在这里使用"$location"显然只是一个例子。您可以使用"$window"或任何您想要的内容。