如何从角度js中的字符串轻松渲染部分HTML?

时间:2014-05-20 21:15:07

标签: javascript angularjs partial

This fiddle尝试以字符串形式呈现两个部分。当然,这个解决方案不起作用(部分按原样呈现,而不是解释为角度模板)。

根据我的理解,我不得不使用$compile服务,但我不太明白。出于性能原因,我希望每个部分只编译一次,然后只在本地更新。可以$compile这样做,如果是,那怎么办?在我的情况下,部分内容不多,部分内容的更改不多,每个部分可能非常大(整个子页面)。

不,我不希望他们在单独的文件中。此外,视图是延迟加载的。

甚至可以通过为每个这样的部分插入一个新模块来实现这个目标吗?

更新

感谢@threed,我能够解决所有问题。 This is an improved version使用延迟加载的内容和控制器。

1 个答案:

答案 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;
}