我正在使用AngularJS和DataTables。这一切都很好,直到我动态添加数据表的行。然后我丢失了表中每个新行的Angular绑定。
如何重新绑定这些绑定?
如果你看一下这个演示:http://plnkr.co/edit/zXh4UbJvYwZsRtsuTnLw?p=preview
然后您可以同时按下href
个链接,您会在控制台中看到一条消息。
如果您按下“ADD”按钮,则会添加两个新行。这两个新行不再调用msg()
函数。
任何人都知道如何解决这个问题?
答案 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);