31 votes

Angularjs: multiples partiels en html unique?

Est possible de récupérer les multiples html partiels dans un seul format html? J'ai de la prochaine situation:

Template: {header} {main} {footer}

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

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

à l'aide de ng-comprennent que j'ai récupérer 6 html à partir du serveur. Si je vais retrive multiples partiels dans un html, puis je vais récupérer 2 html de serveur uniquement, une pour /et un indice pour /aide.

  • Cette situation est un petit exemple de la situation réelle.
  • La balise script avec le type ng-modèle ne fonctionne pas pour moi, parce que le script doit être inclure avant de ng-inclure.

Merci!

Mise à jour 04/07/12:

Je cherche à mettre à jour plus d'une div à la fois, avec un unique html récupérer. Je n'aime pas ce:

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

Après dans l'utilisation du modèle ng-comprend pour inclure ces partiels. Je pense que ce n'est pas de la bonne façon. Il n'y a d'autre moyen?

Merci!

50voto

Marcello Nuccio Points 3091

Les modèles peuvent être intégrés dans le html principal. Par exemple, avec les 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>
 

vous pouvez utiliser les 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';
  }]);
}]);
 

La documentation du service $ templateCache contient plus de détails.

5voto

davidjnelson Points 585

Ce que je faire est d'utiliser le modèle au lieu de templateUrl, et l'utilisation de la requirejs texte plugin pour charger les modèles. de cette façon, pour le développement, vous pouvez avoir des milliers de fichiers pour vos modèles, mais une fois que vous rapetisser vous n'avez qu'un fichier javascript avec tous les modèles inline.

J'ai créé un projet open source qui est la configuration de base, mais peuvent facilement être modifiés pour angulaires qui ne la minification et requirejs texte plugin câblage pour vous: http://github.com/davidjnelson/agilejs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X