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

jla*_*ghi 31 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"
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

更新04/07/12:

我寻求一次更新多个div,并使用独特的html retreive.我不喜欢这个:

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

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

谢谢!

Mar*_*cio 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>
Run Code Online (Sandbox Code Playgroud)

你可以使用以下内容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';
  }]);
}]);
Run Code Online (Sandbox Code Playgroud)

$ templateCache服务文档包含更多详细信息.

  • 嗯,如果你使用后端来生成HTML,你可以将你的部分作为真实的部分(不同的文件)进行管理,但是为了提高性能而加入所有的HTML.我现在是怎么做的. (9认同)
  • 这个解决方案要记住的一件事是,它可能无法很好地扩展.如果你只有一些模板,这将非常好用.如果您正在使用许多模板构建更大规模的应用程序,那么您的索引文件将非常繁重且难以维护. (4认同)
  • @Marçal,我在构建步骤中执行此操作,除了缩小所有css和js并在逻辑块中分发(通用+当前应用程序)我生成一个文件,其中包含所有模板,可以轻松地获得304的响应.服务器或缓存层...在开发环境中,我只是按需单独提供文件. (2认同)

dav*_*son 5

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

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