0

서비스에서 지시문을 호출하려고합니다. 모든 것을 구현했지만 서비스 범위가 비어 있습니다. 일반적으로 내 함수는 컨트롤러에서 지시문을 호출합니다. 그러나 이러한 기능은 이제 여러 컨트롤러에서 필요하므로 서비스에 추가하려고합니다. 문제는 내 서비스가 지시문을 서비스에 종속성 주입 한 후에도 지시문에서 함수를 볼 수 없다는 것입니다.서비스에서 지시문을 호출하십시오. angularjs + typescript

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 
      } 
     }); 
    } 

그래서 서비스를 가져 와서 지침을보고 기능을 호출하는 방법은 무엇입니까?

+1

서비스의 지시문을 호출 할 수 없습니다. 지시어를 삽입 할 수 없으므로 – PSL

답변

2

서비스에 지시문을 삽입 할 수 없습니다. n 각도. 실제로 지시어를 어디에도 삽입 할 수 없습니다. 지시어는 특정 DOM 요소와 관련이있는 함수 집합으로되어 있으며 일반적으로 응용 프로그램의 다른 부분간에 코드를 공유하는 데 사용하는 것은 바람직하지 않습니다. 그 목적은 서비스로 성취 될 수 있습니다.

서비스에서 지시문의 일부 기능을 호출해야하는 상황에 처한 경우 코드 구조를 검토하는 것이 좋습니다. 귀하의 사례에 대한 구체적인 내용은 모르겠지만 귀하의 지침에서 "공유 된"논리를 서비스로 가져와 해당 서비스를 지침에 삽입하고 거기에서 호출 할 수 있습니다. 이 방법으로 지시어에 의해 호출 된 논리는 응용 프로그램의 다른 부분에도 주입 될 수 있습니다.

관련 문제