如何将对象传递给材质菜单操作?

时间:2018-02-07 01:22:08

标签: dart angular-dart angular-components

我需要将一个对象传递给材质菜单操作。

在可能的情况下,我使用material-list material-list-item。每个项目都有一个菜单material-menu

当我选择菜单选项时,我想通过action:

中方法中使用的相应项目

按照列表示例:

enter image description here

这里是模板(部分):

<material-list>
    <div *ngFor="let item of iniciativas">
        <material-list-item  class="shadow-box-list-item" elevation="2">
            <div>
                <h4>{{item.nome}}</h4>
                <material-progress class="width-300" [activeProgress]="25"></material-progress><span> 25%</span>
                <p>{{item.descricao}}</p>
           </div>
            <span class="material-list-item-secondary">
                <material-menu [menu]="menuModel">
                </material-menu>
            </span>
        </material-list-item>
    </div>
</material-list>

这里是Dart代码(部分):

final MenuModel<MenuItem> menuModel = new MenuModel([new MenuItemGroup([new MenuItem('Editar', action: () => navegarParaItensTrabalho(null)), new MenuItem('Excluir', action: () => excluirItensTrabalho(null))])], icon: new Icon('menu'));

我希望能有一些方法将DOM参数传递给与action:上的MenuItem相关联的函数,我没有找到它。

1 个答案:

答案 0 :(得分:1)

执行此操作的方法是在构建menuModel时传入上下文(item),并让menuModel具有上下文而不是共享相同的实例。

有两种方法可以做到这一点:

  • 有一个方法,在给定项目上下文的情况下创建menuModel。 如果您已经看过,建议返回缓存实例 那个项目。
  • 使用item作为键创建menuModels的地图。更新 每当项目发生变化时,这个地图。

对于实际的菜单模型,您应该能够:

createMenuModel(item) {
  return new MenuModel([new MenuItemGroup([
      new MenuItem('Editar', action: () => navegarParaItensTrabalho(item)), 
      new MenuItem('Excluir', action: () => excluirItensTrabalho(item))])],
      icon: new Icon('menu'));
}