0

저는 Angular에 상당히 익숙하며 물건을 적재하는 순서에 대한 도움을받을 수 있습니다.상위 지시문에서 함수를 정의하고 하위 지시문의 템플릿 속성에서 해당 함수를 호출하기 전에 상위 지시문을 실행하도록 할 수 있습니까?

두 개의 지시문이 있습니다. 부모 지시문 (이력서 목록) 및 자식 지시문 (슬릭 슬라이더). 내 문제는 하위 지시문의 (data-source-fn) 속성이 해당 fn이 정의 된 상위 제어기 전에 실행된다는 것입니다. "정의되지 않은 아마도 처리되지 않은 거부"-와 매끄러운 슬라이더 슬라이드 결코 부하 :이 콘솔 =에 오류가 발생

이제
<resume-list> 
    <slick-slider 
     data-page-size="3" 
     data-scroll-size="3" 
     data-page-buffer="3 + 1" 
     data-total="slides.length" 
     data-config="resumeConfig" 
     data-theme="'theme-resume'" 
     data-slide-template-url="'app/widgets/slickSlider/resume-slide-tpl.html'" 
     data-source-fn="getResumeSlides(id, start, limit)"> 
    </slick-slider> 
</resume-list> 

나는이 문제를 해결하지만, 점점 유지하는 세 가지 방법을 시도했습니다 같은 오류. 그러나 typescript로 Component에 부모 지시문을 만들면 모든 것이 잘 동작합니다. 그래서, 제 질문은 ... 부모에게 자녀에게 전달할 데이터가있는 지침을 가질 수 있습니까?

나는 부모 지침에 대한 시도했다 :

1. Directive with Controller 
2. Directive with no Controller but a (pre) link function instead 
3. Directive with no Controller and a compile (pre) link function 
위의

세 가지가 나에게 같은 오류를 제공합니다 : "아마 처리되지 않은 거부 : 정의되지 않은".... 내가 콘솔에서 디버깅 정의되지 않은 객체가되는 것을 포기 종료 데이터 소스 fn을 ...

바인딩이 된 후 항상 호출되도록 보장 컨트롤러의 $onInit() 방법에 넣어해야합니다 존재하는 바인딩에 의존
+0

당신이'매끄러운-slider' 타이프 라이터 코드의 생성자에서 FN을 실행할 수 있습니다 : 지시어로

app.component('myComponent', { bindings: {value: '<'}, controller: function() { this.$onInit = function() { // 'this.value' will always be initialized, this.doubleValue = this.value * 2; }; } }) 

? –

+0

바인딩이 존재하는 것에 의존하는 초기화 로직은 컨트롤러의'$ onInit()'메소드에 넣어 져야합니다.이 메소드는 바인딩이 할당 된 후에 항상 호출되도록 보장합니다. – georgeawg

+0

코드로 인해 발생하는 문제에 대해 질문 할 때 사람들이 문제를 재현하는 데 사용할 수있는 코드를 제공하면 훨씬 더 좋은 대답을 얻을 수 있습니다. [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (https://stackoverflow.com/help/mcve)을 참조하십시오. – georgeawg

답변

0

초기화 로직 할당 됨.

app.directive('myDirective', { 
    scope: {value: '<'}, 
    controller: function($scope) { 
    this.$onInit = function() { 
     // `$scope.value` will always be initialized, 
     $scope.doubleValue = $scope.value * 2; 
    }; 
    } 
}) 
+0

안녕하세요, George 감사합니다. 나는 그것이 구성 요소로서 할 수 있음을 안다. 제 질문은 지시어로 할 수 있습니까? 내 작품에서 나는 그것을 구성 요소로 창조했다 ... 지시자로서 그것을 원한다. 지시문으로 구현하는 세 가지 다른 방법을 시도했지만 구성 요소와 동일한 방법으로로드하지 않습니다. – Crystal

+0

지시문에 대한 코드를 추가하는 대답이 업데이트되었습니다. – georgeawg

관련 문제