bestsource

Angular: & 를 사용하여 다이렉트 링크 함수 내에서 컨트롤러 함수를 호출합니다.

bestsource 2023. 3. 10. 22:37
반응형

Angular: & 를 사용하여 다이렉트 링크 함수 내에서 컨트롤러 함수를 호출합니다.

디렉티브 링크 함수의 앰퍼샌드 '&'를 사용하여 디렉티브로 전달된 함수를 호출하는 데 문제가 발생했습니다.

함수가 컨트롤러로 호출된 것처럼 보이지만 콜에서는 인수가 전달되지 않습니다.지금까지 살펴본 모든 예에서는 Call in Template를 작성하여 패스스루를 실시합니다.템플릿에서 디렉티브의 함수를 호출하고 그 명령어로 전달된 컨트롤러 함수를 호출하는 방법이 있습니까?

당신은 안에서 인수를 전달하고 있습니까?{}s? 예를 들어 디렉티브의 링크 함수 내에서 다음과 같이 메서드를 호출할 수 있습니다.scope.someCtrlFn({arg1: someValue});

<div my-directive callback-fn="ctrlFn(arg1)"></div>
app.directive('myDirective', function() {
    return {
        scope: { someCtrlFn: '&callbackFn' },
        link: function(scope, element, attrs) {
            scope.someCtrlFn({arg1: 22});
        },
    }
});

function MyCtrl($scope) {
    $scope.ctrlFn = function(test) {
        console.log(test);
    }
}

만지작거리다.

마크의 대답에 더해서 지적하고 싶은 게 있는데, 편지 몇 통을 좀 쓸 수 있어요.&속기이것은, 다음의 것을 전제로 하고 있습니다.callback-fnHTML에서 참조되는 것은 다음과 같습니다.scope.callbackFn를 참조해 주세요.다른 건 다 똑같아서 두 줄만 바꾸면 돼요.마크 버전을 댓글로 남겨놨기 때문에 차이를 쉽게 알 수 있을 거예요.

<div my-directive callback-fn="ctrlFn(arg1)"></div>
app.directive('myDirective', function() {
    return {
        scope: { callbackFn: '&' }, //scope: { someCtrlFn: '&callbackFn' },
        link: function(scope, element, attrs) {
            scope.callbackFn({arg1: 22}); //scope.someCtrlFn({arg1: 22});
        },
    }
});

function MyCtrl($scope) {
    $scope.ctrlFn = function(test) {
        console.log(test);
    }
}

언급URL : https://stackoverflow.com/questions/16839259/angular-calling-controller-function-inside-a-directive-link-function-using

반응형