我正在尝试渲染一段 html,可在动态路线上使用,该路线是通过$http.get()
调用,它返回一段html,
举个例子,我尝试加载这个 html 部分:
<h1>{{ pagetitle }}</h1>
this is a simple page example
我做了一个小小提琴来模拟这个问题,但为了简单起见,我保留了 http 调用,只是将 html 添加到范围的字符串中。
控制器是:
function Ctrl($scope) {
$scope.data = {
view: "<h1>whaaaaa</h1>"
};
}
页面html是这样的:
<div ng-app="">
<div ng-controller="Ctrl">
<div ng-include src="data.view"></div>
</div>
</div>
问题是它不会将字符串添加到 html 文件(ng-include)中,但它显然会对由该字符串组成的 url 进行 http 调用。
那么是否可以只在包含中输入字符串?如果没有,对动态 url 进行 http 调用并将返回的 url 输入页面的正确方法是什么。
你可以用它来玩JSFiddle.
您可以将静态挂钩添加到模板缓存中,假设您有一个获取模板的服务:
myApp.service('myTemplateService', ['$http', '$templateCache', function ($templateCache) {
$http(/* ... */).then(function (result) {
$templateCache.put('my-dynamic-template', result);
});
/* ... */
}]);
然后,你可以这样做:
<div include src=" 'my-dynamic-template' "></div>
NOTE引用名称必须用单引号引起来,这总是让我......NOTE
请注意,在 Angular 尝试解析 url 之前,您必须将其分配给模板缓存。
EDIT:
如果动态 URL 逻辑足够简单,您还可以在 ng-include 中使用条件,例如
<div ng-include="isTrue() && 'template1.html' || 'template2.html'"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)