我使用angular列出了一个json文件,如下所示:
HTML:
<li ng-repeat="task in tasks">
<h1>{{task.title}}</h1>
<small>{{task.date}}</small>
<p>{{task.details}}</p>
<button ng-click="details($event)" data-title="{{task.title}}" data-date="{{task.date}}" data-details="{{task.details}}"></button>
</li>
JS:
$scope.details = function(obj){
var title = obj.target.getAttribute('data-title'),
date = obj.target.getAttribute('data-date');
...
}
我通过data-attributes
传递所有内容,当我点击<button>
时,它会调用ng-click
并通过纯javascript访问所有data-attributes
并创建<div>
包装这些内容。这种方式工作得很好,但有没有更简单的方法通过角度来获取这些值?
答案 0 :(得分:2)
更简单和正确的角度方式,是的只是通过ng-click函数表达式传递task
并从您的处理程序访问它并告别控制器的DOM访问(这无论如何是坏的)和数据属性: -
<li ng-repeat="task in tasks">
<h1>{{task.title}}</h1>
<small>{{task.date}}</small>
<p>{{task.details}}</p>
<button ng-click="details(task)"></button>
</li>
和
$scope.details = function(task){
console.log(task);
//console.log(this.task);
}
<强> Plnkr 强>