AngularJS에서 인라인 템플릿 사용


82

인라인보기 템플릿을로드하고 싶었습니다.

템플릿을 유형의 스크립트 태그로 래핑하고 text/ng-templateID를 temp1.html. 내 모듈 구성은 다음과 같습니다.

learningApp.config(function ($routeProvider) {
    $routeProvider
        .when("/first",{ controller: "SimpleController", templateUrl: "temp1.html"})
        .when("/second", {controller: "SimpleController", templateUrl: "temp2.html"})
        .otherwise({redirectTo : "/first"});
});

GET http://localhost:41685/temp1.html 404 (Not Found)내 콘솔 창에서 해당 이름의 파일을 찾고 있음을 알려줍니다 .

내 질문은 : 인라인 템플릿을 사용하도록 내 경로를 어떻게 구성합니까?

업데이트 : 서버 렌더링 DOM은 다음과 같습니다.

<!DOCTYPE html>
<html>
<head>
    <script src="/Scripts/angular.js"></script>
    <link href="/Content/bootstrap.css" rel="stylesheet"/>
</head>
<body>
    <div class="container">       
    <h2>Getting Started with Angular</h2>
    <div class="row">
        <div class="panel" ng-app="LearningApp">
            <div ng-view></div>
        </div>
    </div>

<script type="text/ng-template" id="temp1.html">
    <div class="view">
        <h2>First View</h2>
        <p>
            Search:<input type="text" ng-model="filterText" />
        </p>
        <ul class="nav nav-pills">
            <li ng-repeat="cust in customers | orderBy:'name' | filter: filterText "><a href="#">{{cust.name}} - {{cust.school}}</a></li>
        </ul>
    </div>
</script>

<script type="text/ng-template" id="temp2.html">
    <div class="view">
        <h2>Second View</h2>
        <p>
           Search:<input type="text" ng-model="filterText" />
        </p>
        <ul class="nav nav-pills">
            <li ng-repeat="cust in customers | orderBy:'name' | filter: filterText "><a href= "#">{{cust.name}} - {{cust.school}}</a></li>
        </ul>
    </div>
</script>
    </div>
    <script src="/Scripts/jquery-1.9.1.js"></script>
    <script src="/Scripts/bootstrap.js"></script>
    <script src="/Scripts/app/LearningApp.js"></script>
 </body>
</html>

답변:


111

오디, 당신은 올바른 길을 가고 있었지만 유일한 문제는 태그가 지시문이 사용 되는 DOM 요소 외부 에 있다는 것 ng-app입니다. <body ng-app="LearningApp">요소 로 이동하면 인라인 템플릿이 작동합니다.

이 질문과 관련이있을 수도 있습니다. AngularJS가 필요할 때가 아니라 처음에 부분을로드하도록 만드는 방법이 있습니까?


2
이제 대부분의 자습서에서 html 요소에 ng-app 지시문을 추가하는 것을 선호하는 이유를 알 수 있습니다. 그 이유는 해당 앱 / 모듈과 관련된 모든 것이 ng-app 범위 내에 있어야하므로 html 태그에
— 넣으면

3
이것은 문서에서 언급해야 할 것입니다. 그 404이 나타난 이유는 ... 궁금 시간을 잃었다
— 롭 Juurlink에게

32

스크립트 요소의 id-Attribute를 사용하여 템플릿 이름이 작동하도록 설정하십시오.

<script type="text/ng-template" id="temp1.html">
   ... some template stuff
</script>

내가 그거 했어. 작동하지 않았습니다. 내 메인 페이지가 실제로 일반적인 html 파일이 아니라는 사실이 의심됩니다. 서버 / 컨트롤러
— Ody 2013

템플릿 파일을 사용하지 않는 이유는 내 의견에서 더 명확합니다.
— tschiela 2013

그래, 당신 말이 맞아. 이 방법은 잘 작동하고 더 잘 수행됩니다. 하지만 백본과 같은 이전 프레임 워크로 작성된 마이그레이션하려는 애플리케이션이 있으며 인라인 템플릿에 크게 의존합니다. 그래서 각도에서 어떻게되는지 알고 싶었습니다.
— Ody
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.