2014-06-24 3 views
1

내가 거기에 한 가지 방법이있다 각도에서 서비스를 - 내 HTML에바인드 서비스 방법 - 각도

내가 원하는 누군가의 이름을 반환 GetName()가 같은 것을 {{할 수 있기를 말한다 $ scope.GetName()}} 내 메서드 결과에 바인딩해야합니다. 내 주요 문제는 내 서비스의 이름이 (다른 컨트롤러를 통해) 바뀌면 내 {{.....}} 변경을 원한다는 것입니다.

바라건대 말이 되네.

감사합니다, 야 니스

+0

무엇이 질문입니까? – mpm

답변

0

당신은 DOM 요소에 동적 서비스 호출을 바인딩 할 수 없습니다.

아마도 가장 좋은 방법은 서비스 내에서 변경된 이름을 $watch으로 변경하고 변경시 콜백 함수를 사용하는 것입니다. 또한 컨트롤러에 이름이 변경되었음을 알리는 방법이 필요하므로 이벤트 리스너도 설정해야합니다. 리스너는 범위 변수를 업데이트 할 함수, 예를 들어 $scope.nameFromService을 호출합니다. 그리고 당신의 HTML에 당신이 컨트롤러 부분의 내부에만이 필요한 것 :

  • 다른 컨트롤러가 서비스
  • 의 값을 변경 : 분명히하기 위해, 다시

    {{nameFromService}} 
    

    ,이 일어나는 것이다

  • $watch는 트리거 (무엇보다도) 컨트롤러의 이벤트 리스너가 이벤트를 수신 변수의 범위를 업데이트
  • 이벤트를 트리거 함수를 호출됩니다
  • 자동으로 DOM을 업데이트 각도

UPDATE

당신이 당신의 서비스를 변경할 수 있다면, 실제로 전체 $watch 일을 피할 것하고 이벤트를 트리거 소위 때 그냥 이름 setter 함수를 수정 . 그렇게하면 모든 컨트롤러가 이름 변경을 인식 할 수 있습니다.

+0

기본적으로 .on과 .emit을 사용 하시겠습니까? 하지만 그때 내 서비스 (내 보낸) 내 컨트롤러에 (그) 않습니다 정말 멋있는 커플. – user2624034

+0

서비스가 반드시 메시지를 내 보일 수는 있지만 서비스를받는 사람은 상관하지 않습니다. – Shomz