使用AngularJS将元素文本复制到title属性的干净方法
Clean way to copy element text into title attribute with AngularJS
我在一个表中有这样的东西:
<tr ng-repeat="book in books">
<td title="{{book.title}}">{{book.title}}</td>
<td title="{{book.author}}">{{book.author}}</td>
</tr>
我使用CSS在溢出时显示省略号,我希望在悬停时显示一个工具提示,显示单元格的全部预期内容,从而使用title属性。在上面的例子中,这还不错,但在其他情况下,我有更复杂的AngularJS表达式和过滤器等,我讨厌在内容和标题属性中重复同样的事情。
我可以使用某种AngularJS魔术(可能是指令?)将生成的元素内容自动复制到title属性中吗(反之亦然),如果可以,我该如何做到?
如果这是一个新手问题,很抱歉,但我是AngularJS的新手,我在谷歌上寻找解决方案的尝试没有成功。
您可以编写一个非常简单的指令,只需获取内部内容并将其设置为标题:
app.directive('contentTitle', function($timeout) {
return {
link: function(scope, element) {
$timeout(function() {
element[0].title = element[0].textContent;
});
}
};
});
并像这样使用:
<tr ng-repeat="book in books">
<td content-title>{{book.title}}</td>
<td content-title>{{book.author}}</td>
</tr>
注意1:我将代码封装到$timeout
中,以确保它在元素内容正确插值后运行。
注意2:如果您支持IE8,那么您应该使用innerText,那么跨浏览器的方式将是element[0].textContent || element[0].innerText
。
演示:http://plnkr.co/edit/rXgHwaeScsQdYlFMC7yR?p=preview
相关文章:
- 为什么NgModelController属性/方法以$开头
- 如何使用设置属性方法在jquery中更改css
- 全局向对象添加属性/方法
- AngularJS $http.delete 在“类型错误:无法分配给只读属性'方法'”中中断
- 添加属性/方法的明确最佳方法
- 扩展类时继承而不是覆盖属性/方法
- Javascript子类对象不保留基类的属性/方法
- 将模型属性方法发送到客户端 Sails Angular
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 类型错误:无法读取 nodejs 应用程序中未定义的属性“方法”
- 属性/方法无法初始化indexedDB
- 在javascript中定义属性方法的适当模式;类”;
- 创建两个函数来计算对象属性/方法
- 当getElementById返回null时,取消对属性/方法的访问
- 自定义属性方法如何在Sails js中工作
- 通过js中的数组属性方法进行迭代
- 为什么要添加属性/方法到视图模型AFTER定义
- 在Angular中,在闭包中引用服务属性/方法最合适的方式是什么?
- 列出一个对象的所有属性/方法
- Javascript:添加属性方法问题