AngularJS ng-include는 $ scope로 전달되지 않는 한 뷰를 포함하지 않습니다.


121

ngInclude원시 경로를 취할 수 있다고 가정하는 것이 잘못 입니까? 계속해서 ngInclude다음과 같이 설정하려고 합니다.

<div ng-include src="views/header.html"></div>

이것은 작동하지 않지만 이와 같은 작업을 수행하면 작동합니다.

// HeaderController
app.controller('HeaderCtrl', function($scope){
   $scope.templates = {[
     template: { url: 'views/header.html' }
   ]};

   $scope.template = $scope.templates[0].template;
});

내 index.html에서

<div ng-controller="HeaderCtrl">
  <div ng-include src="template.url"></div>
</div>

ngInclude범위를 벗어난 값만 제외 합니까 ? 그렇다면 왜 이런 식이고 html 부분의 직선 포함이 아닙니다.

답변:


327

ng-include식을 받아들입니다. 거기에 직접 명시 적 URL을 지정하려면 문자열을 제공해야합니다.

<div ng-include src="'page.html'"></div>

네 방금 봤어요. 제가 살펴본 예는 이전 버전의 앵귤러를 사용하는 것입니다.
Chad

44
오늘 오후에 이것을 알아 내려고 많은 시간을 보냈습니다. 중 물론 그것은 문자열이어야합니다. 그것은 완전히 의미가 있습니다.
Code Whisperer 2013 년

앱 모듈에서 활성화 된 ngSanitize에서는 작동하지 않습니다. 해결책을 찾고 있습니다.
Dida

4
한 가지 더 : 페이지는 파일 이름으로 밑줄을 사용할 수 없습니다.

5
작은 작은 따옴표가 문제를 해결합니다. 나는 정확한 변화를 볼 수 없었다 (나의 가난한 눈). 단어의 큰 따옴표 안에 작은 따옴표를 추가하십시오.
Fizer Khan

1

ng-include, 다른 지시문 ( ng-class, ng-src...) 은 범위에서 Angular 표현식평가합니다 . 따옴표 ( '')가 없으면 범위의 변수를 검색합니다.


src속성 을 지정할 필요가 없습니다 .

<div ng-include src="'views/header.html'"></div>

다시 쓸 수 있습니다 : (더 간단합니다)

<div ng-include="'views/header.html'"></div>

ng-include를 요소 로 사용할 수도 있습니다 .

<ng-include src="'views/header.html'"></ng-include>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.