AngularDart 材质菜单动态模型

时间:2021-02-03 12:32:37

标签: angular-dart

您好,我正在尝试通过 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];
  }

它正在工作,但我不喜欢这个解决方案,因为它仍然是一个缓存,因此例如,当我需要禁用列表中的某些操作时,它依赖于实体,并且当实体发生更改时,操作是仍然相同,依赖于实体的先前状态。

0 个答案:

没有答案