Angularjs: wielokrotność w pojedynczym html?

Czy możliwe jest pobieranie wielokrotnych części html w jednym html? Mam następną sytuację:

Template: {header} {main} {footer}

/index: header:"Welcome" main:"welcome text" footer:""

/help: header:"Help title" main:"faq tips" footer"Back to home"

Używając ng-include muszę odzyskać 6 html z serwera. Jeśli będę pobierać wielokrotności częściowe w jednym html to będę pobierać 2 html tylko z serwera, jeden dla / index i jeden dla / help.

  • ta sytuacja jest małym przykładem rzeczywistej sytuacji.
  • znacznik script z typem ng-template nie działa dla mnie, bo skrypt musi być include before of ng-include .
Dzięki!

Aktualizacja 04/07/12:

Staram się aktualizować więcej niż jeden div na raz, za pomocą unikalnego html. Nie podoba mi się to:

function IndexCtrl($scope) {
    $scope.mainPage = 'partials/index/index.html';
    $scope.headerTemplate = 'partials/index/header.html';
    $scope.footerTemplate = 'partials/index/footer.html';
}

Po w szablonie użyj ng-includes dla including te częściowe. Myślę, że to nie jest właściwy sposób. Jest inne wyjście?

Dzięki!
Author: jlarghi, 2012-07-04

2 answers

Szablony mogą być osadzone w głównym html. Na przykład z następującym index.html:

<!DOCTYPE html>
<html ng-app=app>
<meta charset=utf-8>
<title>App</title>
<ng-view>Loading...</ng-view>
<script type=text/ng-template id=partial1.html>
 <p>foo = {{foo}}</p>
</script>
<script type=text/ng-template id=partial2.html>
 <p>Contents of partial2.html</p>
</script>
<script src=app.js></script>

Możesz użyć następującego app.js:

angular.module('app', [], ['$routeProvider', '$controllerProvider', function($routeProvider, $controllerProvider) {

  $routeProvider.when('/p1', { templateUrl: 'partial1.html', controller: 'Partial1' });

  $controllerProvider.register('Partial1', ['$scope', function($scope) {
    $scope.foo = 'bar';
  }]);
}]);

Dokumentacja dla usługi $ templateCache zawiera więcej szczegółów.

 50
Author: Marcello Nuccio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-02 16:57:45

Używam szablonu zamiast templateUrl i używam wtyczki tekstowej requirejs do ładowania szablonów. w ten sposób możesz mieć tysiące plików dla swoich szablonów, ale po minifikacji masz tylko jeden plik javascript ze wszystkimi szablonami.

Stworzyłem projekt open source, który jest skonfigurowany dla szkieletu, ale można go łatwo zmodyfikować dla angular, który robi minifikację i wymaga okablowania wtyczki tekstowej js dla Ciebie: http://github.com/davidjnelson/agilejs

 5
Author: davidjnelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-04 23:57:08