Angular 2绑定vs事件检测

时间:2016-06-18 14:12:48

标签: angular angular2-template

我有一个包含多个下拉菜单的页面作为过滤器,我有一个函数监听器,可以在任何下拉列表更改时更新过滤。

private RegenerationType AccquireRegenerationState (int floor, int playerFloor)
{
    bool entranceExists = (floorBlocks[floor].doorBlocks.Count != 0) ? true : false;

    if (floor + 1 == playerFloor || !floorBlocks[floor + 1].isVisited)
    {
        if (entranceExists)
        {
            return RegenerationType.Still;
        }
        else
        {
            return RegenerationType.Limit;
        }
    }
    else
    {
        if (entranceExists)
        {
            return RegenerationType.Prime;
        }
        else
        {
            return RegenerationType.Full;
        }
    }
}

但是当执行我的<select [(ngModel)]="filters.foo" (change)="update()">...</select> <select [(ngModel)]="filters.bar" (change)="update()">...</select> <select [(ngModel)]="filters.quz" (change)="update()">...</select> <select [(ngModel)]="filters.lol" (change)="update()">...</select> <select [(ngModel)]="filters.wtf" (change)="update()">...</select> 功能时,过滤器对象尚未更新。

This plunker显示问题,加载页面并在输入上键入任何内容:

如何在模型更新后调用update()

1 个答案:

答案 0 :(得分:0)

找到解决方案:我们不是收听原生事件,而是收听update()事件。

ngModelChange

I read somewhere您可以删除<select [(ngModel)]="filters.foo" (ngModelChange)="update()">...</select> 这样的括号

ngModel

但这对我没有用,所以我离开了括号,现在它完美无缺:)