2016-09-23 3 views
1

<li>을 클릭하고 ngClick과 함께 일부 데이터를 보낼 수있는 간단한 한 페이지 앱을 현재 개발 중입니다. 이 <li>의 내가 angular.element 및 모든 물건 CSS 스타일을 적용 부모 <div>을 ...이DOM을 조작하는 AngularJS 지시문과 통신

나는 내부 제어 변수를 채우기 위해 JSON을 좀 $http 통화를 할이 ngClick을 클릭하고받을 때 문제입니다. 그래서 컨트롤러와 지시어에 관한 공통점이없는 다른 메뉴를 클릭 할 때 다른 목록을 채우고 사용자가이 목록을 클릭하면 지시문 인 앞서 말한 <li>의 스타일을 지정해야합니다.

그래서 directive에서 link 참조를 말하는 방법을 모르겠다. 나는 그것을 전달하는 법을 모르는 몇 가지 속성으로 스타일을 지정해야한다. 나는 컨트롤러에서 지시어로 전달할 정보를 저장하는 서비스를 사용한다고 생각했지만 Angular를 처음 사용하고 무엇을해야할지 확신이 서지 않습니다. 나는 많은 것을 수색했으나 정확히 내가 무엇을 찾고 있는지를 찾지 못했습니다. $watch을 사용하는 것을 생각했지만 컨트롤러에있는 변수를 볼 수있는 변수가 있으므로 2 시간 전에 부모 범위로 가야합니다.

고맙습니다.

+0

ng-style 또는 ng-class는 조건에 따라 사용할 수 있습니다. – Hmahwish

+0

데이터베이스에서로드 될'background-image'로 사용할 이미지를 JSON에서 얻었 기 때문에 사용할 수 없습니다. 감사 ! – matiaslauriti

답변

1
<div ng-controller="Ctrl as ctrl" ng-style="ctrl.style"> 
    <my-dir on-fetch="ctrl.style = $style"></my-dir> 
</div> 

module.directive('myDir', function(){ 
    return { 
     restrict: 'E', 
     template: '<li ng-click="$ctrl.fetch()"></li>', 
     controller: function(){ 
      var $ctrl = this; 
      this.fetch = function(){ 
       api.fetch().then(function(stylesFromResponse){ 
        $ctrl.onFetch({$style: stylesFromResponse}); 
       }); 
      }; 
     }, 
     bindToController: true, 
     controllerAs: '$ctrl', 
     scope: { 
      onFetch: '&' 
     } 
    }; 
}); 
+0

나는 당신이 쓴 것을 거의 이해하지 못한다 ... 당신이 대답 할 수 있도록 설명해 주시겠습니까? – matiaslauriti

+0

필자는 데이터를 가져올 때 onClick 데이터를 가져 와서 상위 컨트롤러와 통신해야하는 지시문이 있음을 알고 있습니다. 필자가보기에 li이 myDir 인 경우 내부에서 onClick을 처리하고 가져 오기가 준비되면 컨트롤러 메서드 또는 외부 코드를 호출합니다. –

+0

예제를 편집하여 외부 코드에 값을 제공하는 방법을 보여줍니다. –

관련 문제