2017-08-25 25 views
2

所以我有這樣的代碼:如何在Angular DataTables列構建器中進行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>`; 
     }) 
    ]; 

    $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()工作,雖然一切都完美呈現。我在這裏錯過了什麼嗎?

+0

您正在使用'ng-click'動態添加按鈕。點擊將不會自行激活。你需要$編譯的東西:https://docs.angularjs.org/api/ng/service/$compile –

回答

1

請嘗試以下解決方案。在vm.dtColumns後面加上createdRow函數,您需要compile rowng-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) 
    } 
+0

它的工作。現在我的問題是如何將項目的索引傳遞給按鈕。 – FewFlyBy

+0

@FewFlyBy,我不確定,但你可能會在'meta'中找到它。 –

+0

@chiragsatapara'ng-click =「openViewProductModal('+ full.product_id +')」'... – davidkonrad

相關問題