gpt4 book ai didi

javascript - $templateCache 中的 AngularJS 动态部分被剥离

转载 作者:行者123 更新时间:2023-12-03 09:08:36 28 4
gpt4 key购买 nike

要么是我的代码出问题了,要么是我犯了一个错误:

我有一个 json 提要:

{
"sections": [
{
"identifier": "header",
"blocks": [
{
"identifier": "onebyone",
"html": "<h1>API</h1>"
},
{
"identifier": "onebyone",
"html": "<h1>API</h1>"
}
]
},
{
"identifier": "content",
"blocks": []
},
{
"identifier": "footer",
"blocks": []
}
]
}

我在 AngularJS Controller 中进行调用,对各部分进行排序并尝试连接 html block ,因此:

cmsApp.controller('cmsPageCtrl', function($scope, $http, $templateCache, $sce) {

$http.get("/api.php/api/page/home")
.success(
function(response) {
$scope.sections = [];

response.sections.forEach(function(el, idx, arr) {
var id = el.identifier;

$scope.sections[id] = el;
//$scope.sections[id].template = "<h1>HOI</h1>";
$scope.sections[id].template = 'header.html';

var template = "TEST";

el.blocks.forEach(function(el, idx, arr) {

var partial = el.html;
template = template + partial;
});

template = template + "<div><b>b</b>TEST1</div>";
console.log(id);
console.log(template);

$scope.sections[id].template = 'header.html';

$templateCache.put('header.html', $sce.trustAsHtml(template));
console.log(template);

});
}
);
});

现在人们会期望以下输出:

<body ng-app="cmsApp" ng-controller="cmsPageCtrl">
<ng-include src="sections.header.template"></ng-include>
</body>

成为: TEST<h1>API</h1><h1>API</h1><div><b>b</b>TEST1</div>

结果是: <span class="ng-scope">TEST</span><div class="ng-scope"><b>b</b>TEST1</div>

控制台输出为:

cms.ctrl.js (line 33)    TEST<h1>API</h1><h1>API</h1><div><b>b</b>TEST1</div>
cms.ctrl.js (line 34) TEST<h1>API</h1><h1>API</h1><div><b>b</b>TEST1</div>
cms.ctrl.js (line 39) content
cms.ctrl.js (line 33) TEST<div><b>b</b>TEST1</div>
cms.ctrl.js (line 34) TEST<div><b>b</b>TEST1</div>
cms.ctrl.js (line 39) footer
cms.ctrl.js (line 33) TEST<div><b>b</b>TEST1</div>
cms.ctrl.js (line 34) TEST<div><b>b</b>TEST1</div>
cms.ctrl.js (line 39)

什么负责剥离 header 部分输出中的 HTML?

最佳答案

Angular 默认这样做是为了防止注入(inject)。如果您确实想这样做,则需要包含 ng-sanitize插件,然后将模块添加到您的应用程序中:

angular.module('myApp', ['ngSanitize']);

然后使用 ng-bind-html 指令绑定(bind)您的 html 内容。

ng-bind-html="myHTML"

Documentation

关于javascript - $templateCache 中的 AngularJS 动态部分被剥离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144308/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com