gpt4 book ai didi

angular - 在 Angular 2 中的 Jquery 数据表中绑定(bind)按钮事件

转载 作者:行者123 更新时间:2023-12-02 03:54:48 24 4
gpt4 key购买 nike

我正在尝试在我的 Angular 2 应用程序中实现 Jquery 数据表

我可以在我的 html 文件中呈现表格,如下所示

<sa-datatable [options]="options" tableClass="table table-striped table-bordered table-hover">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
</sa-datatable>

在我的组件 Oninit 中,我按如下方式初始化表并在操作中添加两个按钮

ngOnInit() {
this.options = {
dom: "Bfrtip",
ajax: (data, callback, settings) => {
//My Service Call
},
columns: [
{ data: "result.id" },
{ data: "result.name" },
{
data: null, render: function (data, type, row) {
return '<button id="myButton" class="btn btn-primary editbutton" data-toggle="modal" title="1" data-target="#mymodal" (click)="custcatSelected(' + data.result + ')">Edit</button> / <button #myButton1 class="btn btn-danger deletebutton" (click)=deleteCustCat(' + data.result.id + ')>Delete</button>';
}
}
],
buttons: [
'copy', 'excel', 'pdf', 'print', 'colvis'
]
};
}

public custcatSelected(customercat) {
//Implemetation for Edit , where customercat is an object
}

public deleteCustCat(custcatId: string) {
//Implementation for Deleting
}

我无法触发这两个事件 custcatSelected() 和 deleteCustCat()。

我可以理解这些事件不是由 Angular 编译的,因为它是动态添加的。我不知道如何让这些事件发挥作用

任何解决方法都会有帮助,谢谢。

最佳答案

我能想到的一种方法是通过 jQuery 监听事件并使用元素上的 data 属性来处理事件。我还没有测试过这段代码,并且显然这不是一个干净的解决方案。只是为了给你一个想法。

您还需要在组件顶部添加declare var $:any。因为 TypeScript 会提示这一点。

ngOnInit() {
this.options = {
dom: "Bfrtip",
ajax: (data, callback, settings) => {
//My Service Call
},
columns: [
{ data: "result.id" },
{ data: "result.name" },
{
data: null, render: function (data, type, row) {
return `
<button id="selectedBtn" class="btn btn-primary editbutton" data-toggle="modal" title="1"
data-target="#mymodal"
data-elemnt-obj="${data.result}">Edit</button>

<button class="btn btn-danger deletebutton"
data-element-id="${data.result.id}">Delete</button>
`;
}
}
],
buttons: [
'copy', 'excel', 'pdf', 'print', 'colvis'
]
};

$(document).on('click', '#selectedBtn', ($event) => {
let customerCat = JSON.parse($($event).data('elemnt-obj'));
this.custcatSelected(customerCat);
});

$(document).on('click', '.deletebutton', ($event) => {
let customerId = $($event).data('element-id');
this.deleteCustCat(customerId);
});
}

public custcatSelected(customercat) {
//Implemetation for Edit , where customercat is an object
}

public deleteCustCat(custcatId: string) {
//Implementation for Deleting
}

关于angular - 在 Angular 2 中的 Jquery 数据表中绑定(bind)按钮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44364904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com