2012-12-06 8 views
32

Ist es möglich, HTML-Seite in einem anderen in eckigen js einzubetten?Angular JS und Partials

Wenn ja, wie es geht?

Here In ihrem Tutorial ist das Teil nicht in die Seite eingebettet, aber es ist wie andere Seite, wo Sie gehen, wenn Sie auf eines der Elemente klicken. (see demo)

Antwort

32

Ja, Sie können es mit ngInclude Richtlinie tun.

Lesen Sie die Dokumentation und Beispiel hier: http://docs.angularjs.org/api/ng.directive:ngInclude

+22

Das ist schrecklich. Gibt es keine Möglichkeit, eine partielle zu integrieren, ohne eine neue Anforderung aufzurufen, z. B. als ein wiederverwendbares Fragment in der ursprünglichen HTML-Nutzlast? – davidgoli

+0

Genau das, was ich brauchte. Offensichtlich sollte dies sparsam verwendet werden, aber es funktionierte perfekt, um mein Login-Formular wiederzuverwenden. – RevNoah

+9

@davidgoli, soweit ich weiß, geladen eckige Caches Vorlagen, um nachfolgende Anfragen zu vermeiden. –

6

Wenn ng-include ist nicht das, was Sie brauchen, könnten Sie die Winkel-ui-Router Modul prüfen wollen. Es ermöglicht Ihnen geschachtelte und parallele Ansichten ... Es ist großartig, flexibel, einfach zu bedienen und gut dokumentiert. https://github.com/angular-ui/ui-router

7

@Wilt ist richtig, aber hier ist eine spezifische Verbindung und ein Code-Beispiel (von https://github.com/angular-ui/ui-router/wiki/Quick-Reference#ui-view)

In Ihrer Root-Vorlage:

<div ui-view></div> 
<div ui-view="chart"></div> 
<div ui-view="data"></div> 

Und in Ihrer app.config Funktion

$stateProvider.state("home", { 
    views: { 
     "": { 
      template: "<h1>Some HTML</h1>" 
     }, 
     "chart": { 
      templateUrl: "templates/chart.html" 
     }, 
     "data": { 
      template: "<data_thing/>" 
     } 
    }  
})