- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在绑定(bind)一个 html 字符串以使用 ngBindHtml
查看。字符串内容是纯文本以及 anchor 元素。
对于带有 ngBind
的纯文本,我可以使用像 this 这样的过滤器一个将文本长度限制在一定的字数。
我已经通过在文档上创建一个临时元素并遍历它的子节点并计算 textContent 的长度来尝试它:
app.filter('sliceTextContent', function () {
return function (str, max) {
var counter = 0;
var shortenedStr = '';
var wrap = document.createElement('div');
wrap.innerHTML = str;
for (var i = 0; i < wrap.childNodes.length; i++) {
if (wrap.childNodes[i].textContent.length + counter < max) {
shortenedStr += (wrap.childNodes[i].innerHTML) ? wrap.childNodes[i].innerHTML : wrap.childNodes[i].textContent;
counter += wrap.childNodes[i].textContent.length;
} else {
wrap.childNodes[i].textContent = wrap.childNodes[i].textContent.substr(0, max - counter);
shortenedStr += (wrap.childNodes[i].innerHTML) ? wrap.childNodes[i].innerHTML : wrap.childNodes[i].textContent;
break;
}
};
return shortenedStr;
}
});
我认为这不是最佳的,并且在遇到我数据库中的长字符串时可能会导致计时问题。 您有改进它的想法吗?
最佳答案
这是我会做的:它的性能更高,因为:
假设:
代码:
var longString = "Lorem ipsum dolor <a href='#'>link 1 </a> sit amet, consectetur adipiscing elit. Duis in rhoncus nisi. Suspendisse elementum convallis <a href='#'>link 1 </a> faucibus. Nam elit nisl, cursus a mauris sit amet, mattis volutpat nulla. Suspendisse fermentum urna in lobortis semper. Vivamus eu commodo diam, ut blandit justo. Etiam at venenatis purus, a lobortis nisl. Ut fringilla mi nibh, id congue est ultricies ut. In maximus vestibulum sodales. Nulla tempor diam bibendum sapien tempus facilisis. Praesent suscipit dolor sed fringilla vulputate. Nulla dapibus est vitae magna sagittis sodales. In finibus semper convallis.";
function Filter (str, max) {
if (str.length <= max) return str;
var i = 0;
var counter = 0;
var insideAnchor = false;
while (i < str.length && counter < max){
i++;
if (str[i] === '<' && str[i+1] === 'a')insideAnchor = true;
if (insideAnchor && str[i] === '>' && str[i-1] ==='a' && str[i-2] === '/')insideAnchor = false;
if (insideAnchor === false)counter ++;
}
return str.substring(0,i);
}
document.getElementById("me").innerHTML = '>>>' + Filter(longString, 21) + '<<<';
<p id="me"></p>
关于javascript - 如何在使用 ngBindHtml 绑定(bind) View 时缩短 html 字符串的内容文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28136974/
我是 Angular.js 的新手,所以我知道这是一个太基本的问题,但这里似乎是找到 Angular.js 问题答案的唯一地方。 var example = angular.module(
我使用的是 angular 1.6。我正在从我的 nodejs 服务器动态提取 html 并将其写入页面上的 div。 $scope.htmlSource = ''; 我能够很好地显示呈现的 htm
我有一个文本区域 在此我展示了一个问题的答案。我需要使用 ng-bind-html 转换此文本。我需要转换后应显示的 html 文本。请建议 最佳答案 您可以为此使用内容可编辑的 div 而不是纯
这个问题在这里已经有了答案: AngularJS ng-bind-html 2way data binding (2 个答案) 关闭 8 年前。 AngularJS v1.3.14:目前,我在带有“
我有外部 API 数据,它是用户生成的内容。客户希望使用此提要动态更新他自己的站点,包括使用 JavaScript 的能力。 将显示任何 HTML 或 CSS 但不适用于 JavaScript 的内
我正在尝试渲染一些不安全的 HTML(基本上是带有一些内联样式的 HTML 片段),并在我的 View 中包含以下代码: 我的所有样式都被删除了... 我听说有人使用 ngBindHtmlU
我正在获取一些我想在 Angular 小部件中显示的 html 内容。我正在使用 ng-bind-html 在 Controller 中显示此 html 内容。呈现此 html 内容后,我想调用一个
我有以下 Controller ,它在启动时向服务器查询项目列表,该列表获取所有项目的基本详细信息。然后,当用户点击列表中的项目时,它会查询服务器以返回项目的所有信息,包括一些 SVG 数据。 fun
我觉得这应该很容易,因为我使用 ngBindHtmlUnsafe 让它与 Angular 1.0.8 完美配合。我阅读了我需要使用的 API 文档和 StackOverflow $sce.trustA
我正在绑定(bind)一个 html 字符串以使用 ngBindHtml 查看。字符串内容是纯文本以及 anchor 元素。 对于带有 ngBind 的纯文本,我可以使用像 this 这样的过滤器一个
我有一个看起来像这样的字符串(有很多空格,这就是它在我的服务器上的显示方式): var care_description = "MATERIAL\r\n \r\n 56% Acrylic,
从 Angular 1.2.0-RC.2 更新到 1.2.0-RC.3 后,我注意到 ngBindHtmlDirective 解析范围数据方式的更改(通过 this change )触发了重大更改。我
我是一名优秀的程序员,十分优秀!