Angularjs 如何使用角度数据表呈现具有模型绑定的列?

Angularjs 如何使用角度数据表呈现具有模型绑定的列?,angularjs,angular-datatables,Angularjs,Angular Datatables,有没有办法使用DTColumnBuilder在textbox中呈现具有模型绑定的列 比如: DTColumnBuilder.newColumn('ColumnName').withTitle('Column Name').renderWith(function (data) { return '<input type="text" ng-model="ColumnName" />'; }), DTColumnBuilder.newColumn('ColumnName')。wi

有没有办法使用DTColumnBuilder在textbox中呈现具有模型绑定的列

比如:

DTColumnBuilder.newColumn('ColumnName').withTitle('Column Name').renderWith(function (data) {
   return '<input type="text" ng-model="ColumnName" />';
}),
DTColumnBuilder.newColumn('ColumnName')。withTitle('ColumnName')。renderWith(函数(数据)){
返回“”;
}),
否。您可以使用(示例)呈现表格:

DTColumnBuilder.newColumn('firstName','firstName'))
.renderWith(功能(数据){
返回“”
}),
但是,
ng模型
永远不会被识别,因为它本身并没有角度来进行渲染。如果让angular进行渲染,即
datatable=“ng”
ng repeat
它可以工作:


{{item.id}
{{item.lastName}
演示->

请注意,在输入框中进行编辑时,JSON项会更新

遇到同样的问题,下面是我的解决方案:

  • 为DTC实例注册回调
  • 在DataTable$compile中的“draw.dt”上使用
  • 换言之:

    HTML:

    
    
    JS:

    renderWith(函数(数据、类型、完整){
    返回``
    });
    ...
    vm.dtInstanceCallback=(dtInstance)=>{
    vm.dtInstance=dtInstance;
    dtInstance.DataTable.on('draw.dt',()=>{
    让elements=angular.element(“#”+dtInstance.id+”.ng范围);
    角度.forEach(元素,(元素)=>{
    $compile(元素)($scope)
    })
    });
    }
    

    我最小化了元素的选择,以优化性能,也许这是不需要的。到目前为止,在Chrome和Safari中进行了测试,在这两个方面都进行了测试

    如何处理
    ${data}
    ?这是DataTable能够理解的吗?
    <table datatable=""
           dt-options="vm.dtOptions"
           dt-columns="vm.dtColumns"
           dt-instance="vm.dtInstanceCallback"
           class="table table-bordered table-condensed">
    </table>
    
    renderWith(function(data, type, full) {
        return `<a class="ng-scope"><span ng-click='vm.remove("${data}")' class='fa fa-times-circle'></span></a>`
    });
    ...
    vm.dtInstanceCallback = (dtInstance) => {
        vm.dtInstance = dtInstance;
        dtInstance.DataTable.on('draw.dt', () => {
            let elements = angular.element("#" + dtInstance.id + " .ng-scope");
            angular.forEach(elements, (element) => {
                $compile(element)($scope)
            })
        });
    }