This fiddle尝试以字符串形式呈现两个部分。当然,这个解决方案不起作用(部分按原样呈现,而不是解释为角度模板)。
根据我的理解,我不得不使用$compile
服务,但我不太明白。出于性能原因,我希望每个部分只编译一次,然后只在本地更新。可以$compile
这样做,如果是,那怎么办?在我的情况下,部分内容不多,部分内容的更改不多,每个部分可能非常大(整个子页面)。
不,我不希望他们在单独的文件中。此外,视图是延迟加载的。
甚至可以通过为每个这样的部分插入一个新模块来实现这个目标吗?
更新
感谢@threed,我能够解决所有问题。 This is an improved version使用延迟加载的内容和控制器。
答案 0 :(得分:2)
您可以使用ng-include指令(请参阅this jsfiddle)...
HTML:
<div ng-app="app" ng-controller="MyCtrl">
<div ng-repeat="partial in partials">
<div ng-include="partial.name"></div>
</div>
</div>
JavaScript的:
var app = angular.module('app', []);
var data = [
'data1-apple',
'data2-banana'
];
var partials = [
{
name: 'template1',
content: '<div>{{data[0]}}</div>'
},
{
name: 'template2',
content: '<div>{{data[1]}}</div>'
}
];
function MyCtrl($scope, $templateCache) {
for(var i in partials){
$templateCache.put(partials[i].name, partials[i].content);
}
$scope.partials = partials;
$scope.data = data;
}