Jquery 使用函数行绘制损坏的渲染器
我正在使用以下渲染功能渲染列:Jquery 使用函数行绘制损坏的渲染器,jquery,angularjs,datatables,datatables-1.10,angular-datatables,Jquery,Angularjs,Datatables,Datatables 1.10,Angular Datatables,我正在使用以下渲染功能渲染列: DTColumnBuilder.newColumn(null).withTitle('Validation').renderWith(validationRenderer) function validationRenderer(data, type, full, meta) { return '<div class="btn-group">' + '<label class="btn btn-default btn-sm"
DTColumnBuilder.newColumn(null).withTitle('Validation').renderWith(validationRenderer)
function validationRenderer(data, type, full, meta) {
return '<div class="btn-group">' +
'<label class="btn btn-default btn-sm">' +
'<input ng-click="vm.toggleValidation($event, ' + data.id + ', '+meta.row+', '+meta.col+')" name="validation'+data.id+'" type="radio" autocomplete="off" value="YES"> Yes' +
'</label>' +
'<label class="btn btn-default btn-sm">' +
'<input ng-click="vm.toggleValidation($event, ' + data.id + ', '+meta.row+', '+meta.col+')" name="validation'+data.id+'" type="radio" autocomplete="off" value="NO"> No' +
'</label>' +
'</div>';
}
重画完成后,渲染单选按钮立即停止工作。我可以看到单选按钮,但单击单选按钮时不会调用
toggleValidation
。单选按钮只工作一次。如果我删除draw
函数,它工作得很好,因此重绘该行时出错 我无法复制您的场景,但是:原因是您实际上通过draw()
修改了DOM,并且通过重置角度指令。您需要使用$compile
重新初始化指令。我想以下方法可以奏效:
table.row(rowNum).data(rowData).draw(false);
$compile(table.row(rowNum.nodes())($scope);
如果不起作用,则添加一个
$timeout(function() {
$scope.$digest()
})
还有。但是不要认为这是必要的。您正在附加一个引用当前作用域的模板(请参阅调用
vm.toggleValidation
),这需要显式调用$compile方法,否则元素将不会绑定到作用域,并将作为静态内容呈现
DTColumnBuilder.newColumn(null).withTitle('Validation')
.renderWith($compile(validationRenderer)($scope))
DTColumnBuilder.newColumn(null).withTitle('Validation')
.renderWith($compile(validationRenderer)($scope))