javascript - 从单个 HTML *字符串* 注册多个部分

标签 javascript html angularjs partials

想象一下,我有一个包含多个 HTML 部分的字符串,如下所示:

<script type="text/ng-template" id="ratings/down">
    <i class="fa fa-thumbs-o-down"
        style="position: absolute; color: red; font-size: 2em; left: .6em; top: .3em;"></i>
</script>

<script type="text/ng-template" id="ratings/up">
    <i class="fa fa-thumbs-o-up"
        style="position: absolute; color: #77AA33; font-size: 2em; left: .6em; top: .3em;"></i>
</script>

请注意,这当前不是 DOM 的一部分。它位于字符串变量中。我可以以某种方式轻松地将所有部分注册到 the $templateCache service ,并且没有自定义字符串操作?想象一下 HTML 字符串要复杂得多,就完全放弃字符串操作的想法。我希望有一种更简单的方法可以做到这一点?我感觉我不会摆弄 $compile...

最佳答案

这是一个工作 DEMO :

var string = '<script type="text/ng-template" id="ratings/down"> \
    <i class="fa fa-thumbs-o-down" \
        style="color: red; font-size: 2em; left: .6em; top: .3em;">rating down</i> \
    </script> \
 \
    <script type="text/ng-template" id="ratings/up"> \
    <i class="fa fa-thumbs-o-up" \
        style="position: absolute; color: #77AA33; font-size: 2em; left: .6em; top: .3em;"></i> \
    </script>'

var div = document.createElement('div');

div.innerHTML = string;

for (var i = 0; i < div.children.length; i++){
    var temp = div.children[i];
    $templateCache.put(temp.id, temp.innerHTML);
}

我们创建一个假 di​​v 来为我们进行解析。

备注:此逻辑应放在单独的服务中。

关于javascript - 从单个 HTML *字符串* 注册多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27288967/

相关文章:

javascript - 如何测试 REST API + 客户端 MVC 应用程序?

javascript - 处理 prod 中的 concat 和 dev 中的非 concat

javascript - 在 Angular/.NET MVC 中发出发布请求后如何使用模型进行重定向?

javascript - 如何在不裁剪的情况下保存图像?

javascript只删除循环中数组中的第一个匹配项

html - CSS 网格区域根据内容将其他区域推离位置

javascript - 如何在 Angular Directive(指令)输出中运行 javascript 和 css?

javascript - 避免javascript渐进增强导致的DOM元素闪烁?

javascript - AngularJs Ng-Keypress 事件工作不正常?

javascript - 在 .js 文件中嵌入 PHP 变量 java 的最佳方式