gpt4 book ai didi

javascript - angular2 事件监听 *NgFor 迭代变量

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:39 26 4
gpt4 key购买 nike

我一直在探索 angular2 作为解决特定数据绑定(bind)挑战的方法。

我有一个 javascript 对象数组,本质上是一个数据库记录集,我在 UI 中将其作为 html 表显示。我在每一行上都有各种菜单和输入,以允许用户修改底层记录集。

整体工作流是用户从外部数据库加载记录集,在 UI 中对其进行操作,然后将编辑提交回数据库。

下面是数据表组件的 typescript 代码片段:

@Component({
selector: 'employee_table',
template: `
<h2>{{ title }}</h2>
<table>
<tr>
<th colspan=6>Name</th>
<th>Level</th>
<th>Rating</th>
<th>Suggested Total Pay</th>
<th>Total Pay Override</th>
<th>Comment</th>
<th></th>
<th></th>
</tr>
<tr *ngFor="#ee of ee_data" [className]=ee.tr_classes [class.selected]="ee.is_selected">
<td *ngFor="#x of ee.mgmt_spacer"></td>
<td [attr.colspan]="[6-ee.mgmt_tier]">{{ee.name}}</td>
<td>{{ee.level}}</td>
<td>{{ee.rating}}</td>
<td>{{ee.suggested_tct | currency:'USD':true:'1.0-2'}}</td>
<td><input type="text" placeholder="e.g. $100,000"></td>
<td><textarea rows="1" placeholder="Explain Override" autoGrow ></textarea></td>
<td class="txt_btn dr_toggle_btn"
(click)="drToggle($event)">{{ee.show_direct && '-' || '+'}}</td>
<td class="txt_btn desc_toggle_btn">{{ee.show_descendants && '--' || '++'}}</td>
</tr>
<table>
<span class="table_return">Back to Top</span>
`,
providers: [EmployeeTableService],
directives: [AutoGrowDirective]
})
export class EmployeeTableComponent{
title: string = "Employee Data";
ee_data;

constructor(employeeTableService: EmployeeTableService){
this.ee_data = employeeTableService.getData();
}

drToggle(event){
alert('HEY! '+event.target+'; '+event.target.value);
}

}

我正在为如何使用模板中定义的事件监听器将 javascript 对象的句柄传递给 drToggle() 而苦恼。 .

我想将底层 javascript 数组(记录集 ee_data)公开给编辑该记录集的处理函数,让 Angular 自动更新 html。

然而,似乎我只能通过 $event 关键字。我可以想象地审问 $event.target获得 parent <tr> , 然后查看其 <td> 的 html 值元素找到足够的信息来定位javascript对象中的相应记录,但这似乎很迂回。

在ts模板中,有一个迭代变量#ee用于从 javascript 数组构建 html 表。有什么办法可以让我通过同样的 #ee直接变量到我的事件监听器?

最佳答案

<tr *ngFor="let ee of ee_data"
...
(click)="drToggle(ee)"

你可以只传递迭代变量ee

*ngFor 中声明变量的语法是 let 而不是 # 几个月了。

关于javascript - angular2 事件监听 *NgFor 迭代变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40429467/

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