将局部视图渲染为角度中的字符串

时间:2014-11-11 23:26:28

标签: angularjs

在angularjs中是否有办法将渲染的局部视图作为控制器(或服务或其他)中的字符串。

类似

var str = renderPartial('partials/foo.html', {/*scopeObj*/});
$scope.showMe = str;

2 个答案:

答案 0 :(得分:0)

是的,您可以这样做,在您的应用运行功能中,您可以将模板缓存放到$ templateCache:

angular.module("youApp", []).run(["$templateCache", function($templateCache) {
    $templateCache.put("url/to/your/template1.html", 
        "<span>Template</span>");  // 'url/to/your/template1.html' is used to location the cache in angular
}]);

然后在您的视图或其他地方,您可以使用网址(此时不会触发http请求)加载您放在$ templateCache中的模板。

e.g。在html:

<div ng-include="url/to/your/template1"></div>

Here is $templateCache document.

顺便说一句,angular-ui-bootstrap.js(at the bottom of this lib)管理他们在lib中的模板的方式。 :)

答案 1 :(得分:0)

您是否尝试过使用$compile服务:

function someFunction($compile) {
  var element = $compile('<p>{{total}}</p>')({/*scopeObj*/});
}

使用$templateCache可能就像你想要的那样

function someFunction($compile $templateCache) {
  var element = $compile($templateCache.get('partials/foo.html'))({/*scopeObj*/});
}