如何使 ng-click 在 Angular DataTables 列生成器中工作?
How to make ng-click work in a Angular DataTables column builder?
所以我有这个代码:
控制器:
vm.dtColumns = [
DTColumnBuilder.newColumn('product_code').withTitle('Code'),
DTColumnBuilder.newColumn('product_name').withTitle('Name'),
DTColumnBuilder.newColumn(null).withTitle('Actions').notSortable()
.renderWith(function(data, type, full, meta) {
return ` <button class="btn btn-info btn-raised" ng-click="openViewProductModal(${data.product_id})">View</button>`;
})
];
$scope.openViewProductModal = function(id) {
console.log(id)
}
HTML:
<div ng-controller="ProductCtrl as productControl" ng-init="loadProducts()">
<table datatable="" dt-options="productControl.dtOptions" dt-columns="productControl.dtColumns" dt-instance="productControl.dtInstance" class="row-border hover"></table>
</div>
我什至无法让 console.log()
工作,尽管一切都完美呈现。我在这里遗漏了什么吗?
在 solution.Put 下面尝试 vm.dtColumns
之后的 createdRow
函数,您需要 compile row
用于 ng-click
事件。
vm.dtColumns = [
DTColumnBuilder.newColumn('product_code').withTitle('Code'),
DTColumnBuilder.newColumn('product_name').withTitle('Name'),
DTColumnBuilder.newColumn(null).withTitle('Actions').notSortable()
.renderWith(function(data, type, full, meta) {
return ` <button class="btn btn-info btn-raised" ng-click="openViewProductModal(${data.product_id})">View</button>`;
})
];
function createdRow(row, data, dataIndex) {
$compile(angular.element(row).contents())($scope);
}
$scope.openViewProductModal = function(id) {
console.log(id)
}
所以我有这个代码:
控制器:
vm.dtColumns = [
DTColumnBuilder.newColumn('product_code').withTitle('Code'),
DTColumnBuilder.newColumn('product_name').withTitle('Name'),
DTColumnBuilder.newColumn(null).withTitle('Actions').notSortable()
.renderWith(function(data, type, full, meta) {
return ` <button class="btn btn-info btn-raised" ng-click="openViewProductModal(${data.product_id})">View</button>`;
})
];
$scope.openViewProductModal = function(id) {
console.log(id)
}
HTML:
<div ng-controller="ProductCtrl as productControl" ng-init="loadProducts()">
<table datatable="" dt-options="productControl.dtOptions" dt-columns="productControl.dtColumns" dt-instance="productControl.dtInstance" class="row-border hover"></table>
</div>
我什至无法让 console.log()
工作,尽管一切都完美呈现。我在这里遗漏了什么吗?
在 solution.Put 下面尝试 vm.dtColumns
之后的 createdRow
函数,您需要 compile row
用于 ng-click
事件。
vm.dtColumns = [
DTColumnBuilder.newColumn('product_code').withTitle('Code'),
DTColumnBuilder.newColumn('product_name').withTitle('Name'),
DTColumnBuilder.newColumn(null).withTitle('Actions').notSortable()
.renderWith(function(data, type, full, meta) {
return ` <button class="btn btn-info btn-raised" ng-click="openViewProductModal(${data.product_id})">View</button>`;
})
];
function createdRow(row, data, dataIndex) {
$compile(angular.element(row).contents())($scope);
}
$scope.openViewProductModal = function(id) {
console.log(id)
}