Angular-2:是函数调用而不是内联布尔条件对性能的影响?

时间:2017-04-27 11:01:46

标签: angular

我正在使用用户授权并根据条件转到禁用按钮。

我已经实现了逻辑,但我想知道我是否使用函数而不是内联逻辑可能会影响性能?

我的逻辑如下:

排队:

<button type="button" class="btn btn-primary" [disabled]="!ApplicationManager.Model.CanModifyFramework && ((selectedPage.Scope!='0' && !ApplicationManager.Model.CanModifyConfiguration) || (selectedPage.Scope=='0' && ApplicationManager.Model.CanModifyConfiguration))">Save & Close</button>

功能:

<button type="button" class="btn btn-primary" [disabled]="!GetUserAccessability(selectedPage.Scope)">Save & Close</button>

public GetUserAccessability(scope: any): boolean {
    let result: boolean = false;

    if (this.Model.CanModifyFramework) {
        result = true;
    }
    else if (this.Model.CanModifyConfiguration && scope>0)
    {
        result=true
    }       

    return result;
}

1 个答案:

答案 0 :(得分:2)

当您绑定到字段而不是方法时,角度变化检测效率最高。

最好使用observable或事件来通知更改,而不是轮询,然后更新事件处理程序中的字段。

另一个好方法是使用ChangeDetectionStrategy.OnPush并绑定到一个observable。每次发出新值时,| async管道都会调用ChangeDetectorRef.markForCheck()

您可以做的最糟糕的事情是绑定到一个方法,该方法为每个调用返回一个新的对象实例数组。这将使您的应用程序瘫痪。你的方法没有做到这一点,因此并不是那么糟糕。 绑定到字段或Observable是恕我直言仍然是更好的方式。