Javascript 如何将服务注入链接函数?
我需要使用链接函数来操作DOM的某些元素,但为此我需要使用服务。在控制器功能中,我知道如何做到这一点,但在链接功能中,我不知道如何实现这一点 --编辑-- 让我更清楚地说: 我用的是带传单的角型。但在传单中,必须将活动设置为Javascript 如何将服务注入链接函数?,javascript,angularjs,leaflet,angular-formly,Javascript,Angularjs,Leaflet,Angular Formly,我需要使用链接函数来操作DOM的某些元素,但为此我需要使用服务。在控制器功能中,我知道如何做到这一点,但在链接功能中,我不知道如何实现这一点 --编辑-- 让我更清楚地说: 我用的是带传单的角型。但在传单中,必须将活动设置为链接功能,如下所示: link: function($scope) { $scope.to.marker.on('dragend', function(eventArguments) { var newPosition = eventArguments.targe
链接
功能,如下所示:
link: function($scope) {
$scope.to.marker.on('dragend', function(eventArguments) {
var newPosition = eventArguments.target.getLatLng();
$scope.model.geocodes = newPosition;
});
}
问题是,我需要在此基础上注入一个服务。在angular formly()中,它向我展示了我可以在controller:function($scope)
上注入服务,但是不要给我在链接上做同样的事情的方法,当我在链接中更改$scope.model.geocodes
时,它不会触发我在自定义模板的控制器中设置的观察者
我希望我说得很清楚。我相信您可以将其注入指令并将其捕获到链接函数中:
function SomeDirective(SomeService){
return{
link:function(){
SomeService.something();
}
}
}
SomeDirective.$inject = [
"SomeService"
];
angular
.module("some-module")
.directive("some", SomeDirective);
这是不正确的做法。您应该首先解析控制器中的任何数据,然后,若必须,使用解析后的值操作dom元素。我假设您正在使用$scope,这样您就可以使用它了。我建议使用ControllerAs语法。对于Angular 1.5.x,理想情况下应该使用组件和$element injectable,并依靠视图来处理dom中的任何更改。不过,许多方法都是有效的,只是我个人的偏好。@musefan我把它理解为“如何在指令的链接函数中使用服务”