Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从服务angularjs+;打字稿_Javascript_Angularjs_Angularjs Directive_Typescript_Angularjs Service - Fatal编程技术网

Javascript 从服务angularjs+;打字稿

Javascript 从服务angularjs+;打字稿,javascript,angularjs,angularjs-directive,typescript,angularjs-service,Javascript,Angularjs,Angularjs Directive,Typescript,Angularjs Service,我正在尝试从服务调用指令。我已经实现了所有功能,但我的服务范围将变空。通常我的函数从控制器调用指令。但是这些功能现在需要跨多个控制器,所以我想将它们放在一个服务中。问题是,即使在将指令的依赖项注入到服务中之后,我的服务也看不到指令中的函数 export interface MyServiceScope extends IScope, directives.MyPanelScope, directives.MyPanelMenuScope { // a bunch

我正在尝试从服务调用指令。我已经实现了所有功能,但我的服务范围将变空。通常我的函数从控制器调用指令。但是这些功能现在需要跨多个控制器,所以我想将它们放在一个服务中。问题是,即使在将指令的依赖项注入到服务中之后,我的服务也看不到指令中的函数

    export interface MyServiceScope extends IScope, directives.MyPanelScope, directives.MyPanelMenuScope {
            // a bunch of properties that are not visible in the service scope, only the controller
        }

// constructor here, controller does not initialize directives here just in interface and it works fine.

    public serviceFunc() {
        this.scope.panel.directiveFunc({ // directiveFunc undefined in service, but not in controller
            template: "some/html/template",
            data: {
                item: data
            }
        });
    }

那么,如何让服务看到指令并调用其函数呢?

您不能将指令注入到服务中。实际上,您不能在任何地方注入指令。 指令应该是一组严格与特定DOM元素相关的函数,使用它们在应用程序的不同部分之间共享代码通常是不好的做法。这一目的可以通过服务来实现


如果您发现服务需要从指令中调用某些函数,我建议您检查代码结构。我不知道您案例的具体情况,但您可以将指令中的“共享”逻辑引入服务,将该服务注入指令并从那里调用它。这样,指令调用的逻辑也可以注入到应用程序的其他部分。

您不能从服务调用指令。因为您不能注入指令