如何将ngRepeat内容复制到另一个div中?

时间:2014-10-28 23:55:59

标签: javascript angularjs angularjs-scope

我使用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>包装这些内容。这种方式工作得很好,但有没有更简单的方法通过角度来获取这些值?

1 个答案:

答案 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