您好,我正在尝试通过 MenuModel 为表格中的每一行使用动态下拉菜单。
component.dart
MenuModel getActionMenu(User u) {
return MenuModel(
[
MenuItemGroup(
[
MenuItem('Edit', action: () => update(u), icon: Icon('create')),
MenuItem('Remove',
action: () => remove(u.id), icon: Icon('delete')),
],
),
],
icon: Icon('more_vert'),
);
}
component.html
<tr class="partner-list-tr" *ngFor="let user of data">
<td>
<material-menu [menu]="getActionMenu(user)"></material-menu>
</td>
</tr>
但是该函数每次都返回一个 MenuModel 的新实例,我认为这就是问题所在,因为在这种情况下,下拉列表出现但不可点击..
覆盖是使用缓存并像这样保存每个实例一次
MenuModel getActionMenu(User u) {
if (models[u.id] == null) {
models[u.id] = MenuModel(
[
MenuItemGroup(
[
MenuItem('Edit',
action: () => update(u), icon: Icon('create')),
MenuItem('Remove',
action: () => remove(u.id), icon: Icon('delete')),
],
),
],
icon: Icon('more_vert'),
);
}
return models[u.id];
}
它正在工作,但我不喜欢这个解决方案,因为它仍然是一个缓存,因此例如,当我需要禁用列表中的某些操作时,它依赖于实体,并且当实体发生更改时,操作是仍然相同,依赖于实体的先前状态。