angular.js -angularjs 로딩 및 컴파일 메커니즘
阿神
阿神 2017-05-15 17:11:14
0
2
574

먼저 현재의 기술 환경에 대해 이야기해보겠습니다: angle1.6, ui-route, require 질문:
1. ui-route에 의해 로드된 템플릿과 동적으로 등록된 컨트롤러 중 어느 것이 컴파일되고 실행됩니까? 첫 번째? 예: 템플릿의 #id 너비를 얻으려면 $timeout이 있어야 합니까? 그렇지 않으면 undefine
이 나타납니다. 2. 템플릿 전에 사용자 정의 명령의 컴파일이 로드됩니까? 병렬로 로드되나요?
조금 헷갈리는 부분이 있어서 답변을 구합니다. 관련 글과 설명도 감사드립니다!
추가 질문: {{}}가 자동으로 유형을 문자열로 변환합니까?
감사합니다, 답변도 너무 감사드립니다

阿神
阿神

闭关修行中......

모든 응답(2)
淡淡烟草味

官方有详细解释,关于编译过程的介绍:

HTML 컴파일은 세 단계로 이루어집니다.

  1. $compile은 DOM을 탐색하고 지시문과 일치합니다.

    컴파일러가 요소가 지시문과 일치하는 것을 발견하면
    지시문이 DOM
    요소와 일치하는 지시문 목록에 추가됩니다. 단일 요소가 여러 지시문과 일치할 수 있습니다.

  2. DOM 요소와 일치하는 모든 지시어가 식별되면
    컴파일러는 우선순위에 따라 지시어를 정렬합니다.

    각 지시문의 컴파일 기능이 실행됩니다. 각 컴파일
    함수에는 DOM을 수정할 기회가 있습니다. 각 컴파일 함수
    는 링크 함수를 반환합니다. 이러한 함수는 각 지시문의 반환된
    링크 함수를 호출하는
    "결합된" 링크 함수로 구성됩니다.

  3. $compile은 이전 단계에서 결합된
    링크 함수를 호출하여 템플릿을 범위와 연결합니다. 그러면 개별 지시문의
    연결 기능이 호출되고, 요소에 리스너를 등록
    하고, 각
    지시문이 구성한 대로 범위를 사용하여 $watch를 설정합니다.

이 결과는 범위와 DOM 간의 라이브 바인딩입니다. 따라서 이 시점에서 컴파일된 범위의 모델 변경 사항이 DOM에 반영됩니다.

具体请题主详读 https://docs.angularjs.org/gu... 这篇关于compiler的文章.

洪涛
  1. 제 생각에 순서는 다음과 같아야 합니다. 템플릿을 로드하고 동시에 컨트롤러로 이동하여 컨트롤러에서 데이터를 초기화한 다음 $digest 단계에 들어가 템플릿을 렌더링합니다. 따라서 컨트롤러 로딩 프로세스 중에 템플릿의 #id 너비를 가져오지 못할 수 있습니다.
    $digest가 끝난 후 타임아웃에 코드를 실행하고 $digest를 다시 트리거하는 $timeout을 작성하세요.

  2. 사용자 정의 명령의 컴파일 단계는 실제로 템플릿의 구조를 결정합니다. 링크 단계에서는 데이터를 준비한 다음 템플릿을 렌더링합니다.

잘못된 부분이 있으면 정정하고 토론해주세요.

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