Angularjs:单个html中的倍数部分?

时间:2012-07-04 03:43:10

标签: html partials angularjs

是否可以在一个单独的html中检索多个html部分?我有下一个情况:

Template: {header} {main} {footer}

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

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

使用 ng-include 我要从服务器上检索6个html。如果我将在一个html中检索多个部分,那么我将仅从服务器检索2个html,一个用于/ index,一个用于/ help。

  • 这种情况是真实情况的一个小例子。
  • 类型 ng-template 的代码脚本对我不起作用,因为脚本必须包含在 ng-include 之前。

谢谢!

2012年7月7日更新:

我希望一次更新多个div,并使用独特的html retreive。我不喜欢这个:

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

在模板中使用ng-includes包括这些部分。我认为这不是正确的方法。还有其他方法吗?

谢谢!

2 个答案:

答案 0 :(得分:50)

模板可以嵌入主html中。例如,使用以下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>

您可以使用以下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';
  }]);
}]);

documentation for the $templateCache service有更多详情。

答案 1 :(得分:5)

我所做的是使用template而不是templateUrl,并使用requirejs文本插件来加载模板。这种开发方式可以为您的模板提供数千个文件,但是一旦缩小,您只有一个javascript文件,其中包含所有内嵌模板。

我创建了一个开源项目,它是为骨干设置的,但是可以很容易地修改为角度,它可以为您进行缩小和需要文本插件连线:http://github.com/davidjnelson/agilejs