2012-12-06 38 views
32

Czy możliwe jest osadzenie strony html w innym w kanciastym js?Angular JS i partials

Jeśli tak, jak to zrobić?

Here w swoim samouczku część nie jest osadzona na stronie, ale jest podobna do innej strony, na której się znajdujesz po kliknięciu jednego z elementów. (see demo)

Odpowiedz

32

Tak, można to zrobić, używając dyrektywy ngInclude.

Zobacz docs i przykład tutaj: http://docs.angularjs.org/api/ng.directive:ngInclude

+22

To jest okropne. Czy nie ma możliwości włączenia częściowego bez wywoływania nowego żądania, na przykład jako fragment wielokrotnego użytku w początkowym ładunku HTML? – davidgoli

+0

Dokładnie to, czego potrzebowałem. Oczywiście, powinno to być używane oszczędnie, ale zadziałało idealnie, aby zmienić przeznaczenie mojego formularza logowania. – RevNoah

+9

@davidgoli, o ile wiem, kątowe pamięci podręczne załadowały szablony, aby uniknąć kolejnych żądań. –

6

Jeśli ng-include nie jest to, czego potrzebujesz, możesz chcieć, aby sprawdzić kątowe-ui-router moduł. Pozwala na tworzenie widoków zagnieżdżonych i równoległych ... Jest świetny, elastyczny, łatwy w użyciu i dobrze udokumentowany. https://github.com/angular-ui/ui-router

7

@Wilt ma rację, ale tutaj jest bardziej konkretny link i próbki kodu (od https://github.com/angular-ui/ui-router/wiki/Quick-Reference#ui-view)

W szablonie root:

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

I w funkcji app.config

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