7

使用 setDate 方法修改的日期对象不会在模板中更新。

在模板中:

<p>{{date | date:'mediumDate'}}</p>

在组件中:

  nextDay(){
    this.date.setDate(this.date.getDate()+1);
  }

但是当我调用 nextDay 函数时,模板没有更新为新值。

我可以让变更检测工作的唯一方法是这样做:

  nextDay(){
    var tomorrow = new Date();
    tomorrow.setDate(this.date.getDate()+1);
    this.date = tomorrow;
  }

有没有更好的方法来完成同样的任务?

4

1 回答 1

5

我认为这是正确的方法,更改日期变量的引用。从这里的文档中,我们有:

默认更改检测算法通过在更改检测运行中通过引用比较绑定属性值来查找差异。

因此,如果日期参考保持不变,则不会发生任何事情。您需要一个新的日期参考,这就是第二个版本nextDay()有效的原因。

如果您删除格式化管道,您将看到仍然只有第二个版本的nextDay()作品。

于 2016-01-15T20:49:49.527 回答