Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用函数行绘制损坏的渲染器_Jquery_Angularjs_Datatables_Datatables 1.10_Angular Datatables - Fatal编程技术网

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))