PrimeNG p-table 方法在 table 单击时持续触发
PrimeNG p-table methods keeps firing on table click
我有一个 p-table 有一组 12 个项目(不是延迟加载)。
其中一些数据具有计算 HTML 中不同事物的方法。问题是每次 table 点击都会调用所有这些方法,无论我点击哪里。这些方法未绑定到点击事件 - 它们只是以字符串等形式返回一些数据。
有没有什么方法可以禁用该传播,这样我的方法就不会在每次 table 点击时都被调用?我只想渲染这个 table 一次并且不改变任何东西。
我不需要使用onLazyLoad,因为数据足够小,我可以在OnInit中加载它。
p-table 有点像
<p-table [value]="data"
dataKey="id"
[rowHover]="true"
[filterDelay]="0">
<div>{{ calculateCurrentTime() }}</div>
</p-table>
并且 calculateCurrentTime() 会在我每次单击 table 时触发(无论何时)。我尝试设置 lazy="true" 没有帮助,但没有成功。
请务必注意,在此 table 中,我有一个按钮,我希望能够单击该按钮。
以下问题是由于从模板调用函数而发生的,我们不应该在模板中调用函数。
this method is getting called EVERY time I click on the table (no
matter when)
另一种调用函数的方法是在 ngOnInit() 中并将其分配给变量。它将在启动 table 组件期间获取当前时间。
示例:
ngOnInit() {
this.getTabledata();
}
public getTabledata() {
this.data = response.data;
this.data.forEach(item => {
// Update only below particualar object in the data.
if (item.id = 13) {
item.currentTime = this.calculateCurrentTime(item);
}
});
}
在模板中:
<p-table [value]="data"
dataKey="id"
[rowHover]="true"
[filterDelay]="0">
// You can get this item by looping the data. I am just adding the condition
<div>{{ item.currentTime ? item.currentTime : '' }}</div>
</p-table>
Ref Link for Why You Should Never Use Methods Inside Templates in Angular
:
谢谢
我有一个 p-table 有一组 12 个项目(不是延迟加载)。 其中一些数据具有计算 HTML 中不同事物的方法。问题是每次 table 点击都会调用所有这些方法,无论我点击哪里。这些方法未绑定到点击事件 - 它们只是以字符串等形式返回一些数据。
有没有什么方法可以禁用该传播,这样我的方法就不会在每次 table 点击时都被调用?我只想渲染这个 table 一次并且不改变任何东西。 我不需要使用onLazyLoad,因为数据足够小,我可以在OnInit中加载它。
p-table 有点像
<p-table [value]="data"
dataKey="id"
[rowHover]="true"
[filterDelay]="0">
<div>{{ calculateCurrentTime() }}</div>
</p-table>
并且 calculateCurrentTime() 会在我每次单击 table 时触发(无论何时)。我尝试设置 lazy="true" 没有帮助,但没有成功。
请务必注意,在此 table 中,我有一个按钮,我希望能够单击该按钮。
以下问题是由于从模板调用函数而发生的,我们不应该在模板中调用函数。
this method is getting called EVERY time I click on the table (no matter when)
另一种调用函数的方法是在 ngOnInit() 中并将其分配给变量。它将在启动 table 组件期间获取当前时间。 示例:
ngOnInit() {
this.getTabledata();
}
public getTabledata() {
this.data = response.data;
this.data.forEach(item => {
// Update only below particualar object in the data.
if (item.id = 13) {
item.currentTime = this.calculateCurrentTime(item);
}
});
}
在模板中:
<p-table [value]="data"
dataKey="id"
[rowHover]="true"
[filterDelay]="0">
// You can get this item by looping the data. I am just adding the condition
<div>{{ item.currentTime ? item.currentTime : '' }}</div>
</p-table>
Ref Link for Why You Should Never Use Methods Inside Templates in Angular
:
谢谢