【发布时间】:2017-09-28 08:51:22
【问题描述】:
我首先学习了 Vue.js,现在在 Angular 4 中有一个项目,所以我刚刚学习了 Angular。我发现除了“计算属性”之外,一切都与 Vue 没有什么不同。在 Vue 中,我可以创建一个计算属性来监听其他属性的变化并自动运行计算。
例如(在 Vue 2 中):
computed: {
name(){
return this.firstname + ' ' + this.lastname;
}
}
name 属性只会在 firstname 或 lastname 中的一个更改时重新计算。如何在 Angular 2 或 4 中处理这个问题?
【问题讨论】:
-
@Pano angularjs 标签用于 Angular 1 问题。 Angular 使用完全不同的方法,它检测区域的变化。所以基本上 Angular 中的对应物是基本的 get 属性访问器,
get name() { return ... }。 -
谢谢@estus,如何根据可能随时间变化的另一个属性设置一个属性?
-
那么它应该是一个setter。以这种方式更新的组件属性将在视图中正确更新。坚持使用组件道具时,您会发现自己走投无路,Angular 大量使用 RxJS 可观察对象和主题来为数据观察和操作提供灵活的模式。
-
@estus 这样做的常见做法是什么?比如说当一个组件加载的时候,会有一个http请求,之后会进行一些计算,然后才会真正显示在页面上。
-
一种常见的做法是分离关注点,在服务中发出 http 请求并从那里返回计算的 observable。可以使用
subscribe将可观察对象解包在组件中,或者使用| async管道直接绑定到视图。如您所见,根本没有计算属性,数据流是通过可观察对象执行的。如果您有特定的案例,请随时提出问题。
标签: javascript angular vue.js