angular.js - 지시문에서 링크와 컨트롤러의 차이점은 무엇입니까? 비지시적 범위에서 링크를 사용할 수 있나요?
PHP中文网
PHP中文网 2017-05-15 16:51:39
0
2
709

왜 일부는 링크에 작성하고 일부는 컨트롤러에 작성해야 하나요? !
지시문을 사용하지 않고 모듈에서 하위 범위를 설정하려면 링크를 사용할 수 있습니까?
(예를 들어 ngRoute를 사용할 때 ng-view 부분에 대한 링크를 사용할 수 있나요?)
컨트롤러는 서버와 통신할 수 있는데 Link는 그렇지 않은 것 같죠? 아니면 내가 한 번도 본 적이 없는 걸까?

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(2)
小葫芦

디렉티브에서 링크와 컨트롤러의 차이점은 무엇인가요?
1. 실행 순서: 컨트롤러 먼저, 링크 다음
2. 컨트롤러를 사용해야 하는 경우: 일반적인 시나리오에서는 컨트롤러를 사용하고 싶지 않고 링크에 로직을 작성하기만 하면 됩니다. 컨트롤러가 사용되는 시나리오에서는 명령(a로 가정)이 필요합니다. 다른 명령어에 의해(b로 가정) 이 컨트롤러는 b 명령어의 링크 함수에 전달됩니다(require가 여러 개인 경우 배열이 전달되고 각 require 명령어에 해당하는 컨트롤러가 저장됩니다). 배열). 목적은 분명히 명령어 간의 통신입니다.

지시적이지 않은 범위에 링크를 사용할 수 있나요?
링크는 명령어에서만 호출됩니다. 즉, 컴파일 후 명령어가 범위에 바인딩될 때 링크가 호출됩니다.
링크는 명령어가 정의된 곳에서만 사용됩니다. 예를 들어 팝업 상자를 만들 때 템플릿 tpl을 가져온 다음 var linkFn = $compile(angular.element(tpl));此时返回的就是一个link的函数,然后linkFn(scope)를 호출해야 합니다. 범위는 새로 생성되었거나 이미 존재하는 것일 수 있습니다.

某草草

링크와 컨트롤러는 전혀 관련 없는 개념입니다.

특정 지시어의 경우에는 링크가 더 복잡하며 기본적으로 $compile의 콜백으로 간주될 수 있습니다. Angularjs의 경우 지시어를 먼저 컴파일해야 합니다. ---> object ---&gt ; 해당 범위에 바인딩하기 위한 호출 링크 ---> Trigger $digest(지시문을 업데이트하는 데는 여러 단계가 있습니다. 다양한 개체의 컴파일 시간과 타이밍이 다릅니다. 자세한 내용은 API를 참조하세요. )

간단히 말하면 컴파일, 링크 등은 모두 방향성을 위한 것입니다. 주제가 jquery에 익숙하다면 컴파일 프로세스는 일부 DOM 객체($('<a class = //.... ')를 만드는 것과 같습니다. ) ) 링크는 $().append 또는 prepend와 같은 DOM 작업입니다.

그럼 범위란 무엇인가요? 범위는 모델을 바인딩하는 데 사용됩니다.
컨트롤러란 무엇입니까? 범위에 메서드(논리)를 추가하는 데 사용됩니다.

link는 지시문을 DOM에 삽입하기 위해 AngularJS에서 제공하는 측면 메커니즘입니다. 컨트롤러는 범위의 감시 이벤트가 트리거될 때의 컨텍스트이며 이는 완전히 다릅니다.

마지막 질문은 함수가 실행될 수 있으면 작성한 코드도 실행될 수 있지만 일반적으로 말하자면
1) 비즈니스 로직을 컨트롤러에 작성하고 지시어 자체 컨트롤러에 작성하지 말고 범위의 컨트롤러에 작성하세요

2) 컨트롤러에서 DOM 작업, 특히 앞에 추가 및 추가 작업을 수행하지 마세요. 컴파일되지 않은 DOM 객체는 감시할 수 없고,angularjs는 나중에 추가되고 컴파일되지 않은 DOM 객체를 모니터링하지 않기 때문입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿