我已经制作了一个AngularJS指令,用于向overflow:hidden文本添加省略号。它似乎不适用于Firefox,我不相信我已经尽可能地构建它。流程是:
HTML
<p data-ng-bind="articleText" data-add-ellipsis></p>
指令
app.directive('addEllipsis', function(){
return {
restrict : 'A',
scope : {
ngBind : '=' // Full-length original string
},
link : function(scope, element, attrs){
var newValue;
scope.$watch('ngBind', function () {
/*
* CODE REMOVED - Build shortened string and set to: newText
*/
element.html(newText); // - Does not work in Firefox and is probably not best practice
});
}
};
});
有问题的一行是指令中的最后一行:
element.html(newText)
我假设应该使用一些模板式方法?我不清楚如何最好地接近答案。谢谢你的帮助。
答案 0 :(得分:10)
您可以使用filter代替。像这样:
过滤强>
app.filter('addEllipsis', function () {
return function (input, scope) {
if (input) {
// Replace this with the real implementation
return input.substring(0, 5) + '...';
}
}
});
<强> HTML 强>
<p data-ng-bind="articleText | addEllipsis"></p>
答案 1 :(得分:0)
如果您将data-ng-bind="articleText"
替换为ng-model="articleText"
,则它应该适用于Chrome和Firefox。我不知道为什么,也许这是一个错误?但这是一个快速解决方案。
如果您对这种差异感兴趣,可以查看此post。但是在不同的浏览器中行为不同确实有点奇怪。