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.