使用NgInclude加载AngularJS组合指令模板
Loading AngularJS combined directive templates with NgInclude
我想在一个文件中包含所有指令模板,以减少加载指令密集页面所需的HTTP请求数量。
我有这个指令
angular.module('bwDirectives', [])
.directive('bwInfoCard', function () {
return {
restrict: 'E',
transclude: false,
replace: true,
scope: { title: '=' },
templateUrl: "one-template",
};
})
如果我像这样在线指定模板,那么它会正确加载指令模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Directive Test Fixture</title>
<link rel="stylesheet" href="../Style.css" type="text/css" />
<script src="../../../Libraries/angular.min.js"></script>
<script src="../Widget.js"></script>
<script src="./Fixture.js"></script>
</head>
<body ng-app="BaseWidgetFixtures">
<h1>Base Info Card</h1>
<script type="text/ng-template" id="one-template">
<div>This is first template</div>
</script>
<script type="text/ng-template" id="two-template">
<div>This is second template</div>
</script>
<div ng-controller="InfoCardFixture">
<bw-info-card title="title"></bw-info-card>
</div>
</body>
</html>
如果我尝试通过NgInclude包含模板,但它失败了。我猜它试图在执行NgInclude之前加载指令的模板(即使它在文件的早期)。页面上将包含正确的脚本标记。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Directive Test Fixture</title>
<link rel="stylesheet" href="../Style.css" type="text/css" />
<script src="../../../Libraries/angular.min.js"></script>
<script src="../Widget.js"></script>
<script src="./Fixture.js"></script>
</head>
<body ng-app="BaseWidgetFixtures">
<h1>Base Info Card</h1>
<div ng-include src="'templates.html'"></div>
<div ng-controller="InfoCardFixture">
<bw-info-card title="title"></bw-info-card>
</div>
</body>
</html>
是否有我缺少的东西,或者你可以不使用NgInclude模板与指令一起使用吗?
谢谢。
看看Pete Bacon Darwin在这里解释指令链接/编译的顺序的讨论。https://groups.google.com/forum/#!主题/角度/3HsNz4ncnYA/讨论。你可能会重新调整你的html以使其工作,但这并不是ng-include
真正想要做的。如果你不想用AJAX加载你的模板,我建议你使用像angular templatecache这样的东西。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 根据id将json数组组合为一个json数组
- 使用每次都不同的transclude重复指令
- 打开一个模态并将其链接到AngularJS中的指令
- 从html创建一个指令,该指令按类名应用函数
- 接受不在列表中的值-引导组合框
- 将JSON对象传递给angular指令
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- JavaScript指令不能像我想象的那样工作
- 使用NgInclude加载AngularJS组合指令模板
- 组合/扩展/“子类化”Angular 指令
- 在视图中使用compile in指令和ng repeat的组合会阻止正确更新范围元素列表
- 从带有输入框列表的Angular自定义指令中获取组合字符串
- 用相似的逻辑组合2个Knockout指令
- 将两个指令组合在一起
- 为标签和属性组合创建一个自定义angular指令
- 将工厂中的所有ngdialog组合在一起,并从指令中调用它们
- 当与ngIf指令组合时,一次绑定重新计算变量是否正确?-AngularJS