programing

지시사항의 물음표

iphone6s 2023. 3. 23. 22:24
반응형

지시사항의 물음표

저는 튜토리얼에 따라 필요한 작업 지침을 얻으려고 했습니다.ngModel:

app.directive("contenteditable", function() {
    return {
        restrict: "A",
        require: "ngModel",
        /* etc. */

다음과 같이 로드하지 못했습니다.

명령어 'contentible'에 필요한 컨트롤러 'ngModel'을 찾을 수 없습니다!

앵귤러 독스의 유사한 코드를 보고,require행:

require: "?ngModel"

이제 잘 작동합니다.제 생각엔?선택사항이긴 한데 그게 말이 되질 않아요.물음표는 무엇을 하고 있습니까?또한 (명료하지 않은 경우) 왜 지시가 기능하도록 하고 있습니까?

당신이 추측한 그대로입니다.?는 디렉티브를 옵션으로 합니다.

기본적으로 지시 요건을 정의할 때는 다음 사항을 자유롭게 사용할 수 있습니다.

  1. someDirective: 동일한 요소에 대해 어떤 디렉티브가 필요하며 링크 기능에 전달합니다.
  2. ?someDirective: 같은 요소에서 사용할 수 있는 경우 몇 가지 Directive 컨트롤러를 링크 기능에 전달합니다.그렇지 않으면 null을 통과합니다.
  3. ^someDirective: 부모 요소 중 하나에 대해 어떤 디렉티브를 요구하여 링크 기능에 전달합니다.
  4. ?^someDirective: 부모 요소 중 하나에서 사용 가능한 경우 몇 가지 Directive 컨트롤러를 링크 기능에 전달합니다.그렇지 않으면 null을 통과합니다.

디렉티브에 다른 디렉티브가 여러 개 필요한 경우 동일한 디렉티브를 사용하여 다음과 같은 어레이를 전달할 수 있습니다.

require: ['firstRequiredDirective', '^secondRequiredDirective']

이번에는 필요한 디렉티브의 컨트롤러 배열을 링크 함수에 전달합니다.

당신의 경우, 만약 요소가 다음 값을 갖는다면contenteditable디렉티브는ngModelngModelController는 링크 함수에 전달됩니다.

없는 경우ngModel지시가 있으면 통과될 거야null.

@Igor Pantovic의 답변에 대한 자세한 내용을 덧붙입니다.^Angular에서 접두사JS $compile 가이드:

  • (프리픽스 없음): 현재 요소에서 필요한 컨트롤러를 찾습니다.찾을 수 없는 경우 오류를 발생시킵니다.

  • ? - 필요한 컨트롤러를 찾거나 찾을 수 없는 경우 null을 링크 fn에 전달합니다.

  • ^ - 요소와 그 부모를 검색하여 필요한 컨트롤러를 찾습니다.찾을 수 없는 경우 오류를 발생시킵니다.

  • ^^ - 요소의 부모를 검색하여 필요한 컨트롤러를 찾습니다.찾을 수 없는 경우 오류를 발생시킵니다.

  • ?^ - 요소와 그 부모를 검색하여 필요한 컨트롤러를 찾거나 찾을 수 없는 경우 null을 링크 fn에 전달합니다.

  • ?^^ - 요소의 부모를 검색하여 필요한 컨트롤러를 찾거나 찾을 수 없는 경우 null을 링크 fn에 전달합니다.

?는 필수 디렉티브를 옵션으로 만듭니다., 은 해당됩니다. '쓰다'라고 있어요.ngModel 일 수도 있다contenteditable하지만 실제로는 필요하지 않습니다.

언급URL : https://stackoverflow.com/questions/29777170/question-mark-in-directive-require

반응형