【问题标题】:how to set an initial value for getter in TypeScript如何在 TypeScript 中为 getter 设置初始值
【发布时间】:2017-04-03 18:18:54
【问题描述】:

我有一个 getter 来返回在另一个函数中计算的值。它的形式如下:

private get numErrors() {
    return calculateErrors(key);
}

在我的 html 中,我有 {{ $ctrl.numErrors }}。我正在使用 AngularJS。这会呈现 {{ $ctrl. numErrors }} 在数值数值被计算和显示之前的几秒钟。有没有办法让它在获得返回值之前初始显示 0?

【问题讨论】:

标签: javascript angularjs typescript


【解决方案1】:

您可以通过ng-cloak 解决这个问题。

但是,与其让numErrors() 作为getter 直接返回您的其他函数的结果,为什么不这样做呢?在您需要的逻辑中调用calculateErrors() 并让它设置值。这将在您的模板上自动更新。

numErrors: number = 0;

calculateErrors(key) {
    // Do calculation
    numErrors = resultOfCalculation;
}

【讨论】:

  • ng-cloak 并没有完全解决问题,但现在我把它放在 try catch 块中
【解决方案2】:

考虑到它是数值,如果严格等于undefined就不用检查了,可以

private get numErrors() {
    return calculateErrors(key) || 0;
}

或者

{{ $ctrl.numErrors || 0 }}

【讨论】:

  • 这不起作用,因为该函数不返回错误它只需要一段时间来处理
  • 问题和答案——两者都是——不要说任何关于错误的事情。 “处理一段时间”应该是什么意思?如果它没有立即返回值(即,该值已计算并在下一个摘要中可用),则返回 0。问题中的代码无法解释为什么它不起作用。
猜你喜欢
  • 2022-12-10
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 2018-05-01
相关资源
最近更新 更多