动态添加内容时重新绑定角度绑定

时间:2014-08-12 17:10:35

标签: javascript jquery angularjs

我正在使用AngularJS和DataTables。这一切都很好,直到我动态添加数据表的行。然后我丢失了表中每个新行的Angular绑定。

如何重新绑定这些绑定?

如果你看一下这个演示:http://plnkr.co/edit/zXh4UbJvYwZsRtsuTnLw?p=preview

然后您可以同时按下href个链接,您会在控制台中看到一条消息。

如果您按下“ADD”按钮,则会添加两个新行。这两个新行不再调用msg()函数。

任何人都知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如上所述,您从jQuery的思维模式中思考Angular。以下是您的快速分析,展示了如何使用ng-repeat以更角度的方式执行此操作:

http://plnkr.co/edit/jXySErcKW6XuYGr4P6cA

转发器:

  <tr ng-repeat="foo in entries">
    <td>{{$index + 1}}</td>
    <td>User {{$index + 1}}</td>
    <td><a href="#" ng-click="msg()">link {{$index + 1}}</a>
    </td>
  </tr>

JS:

  // make a single entry.
  $scope.entries = [{}];

  // add an entry.
  $scope.swap = function() {
    $scope.entries.push({});
  }

  // ngClick method.
  $scope.msg = function() {
    console.log('MSG');
  }

但是,如果您需要为此插件以的方式处理 ,那么看起来您使用$compile就在正确的轨道上。

http://plnkr.co/edit/sxa5pVQU834SBLFLOj1K

您需要使用新范围编译DOM字符串,然后附加该字符串。

var newThing = $compile(t)($scope.$new());

$('#data tbody').append(newThing);