AngularJS 2:如何监视数据对象(而不是组件)中的更改?

时间:2015-12-28 04:50:34

标签: angularjs typescript

AngularJS 2文档讨论了像ngOnChanges钩子这样的LifeCycle钩子,它可以让你观察组件中的变化:

LifeCycle Hooks

演示如何使用OnChanges的Plunkr示例明确指出,实现OnChanges的Component引用的数据对象属性的更改不会触发对OnChanges的调用:

Plunkr Example

这是该示例中实现OnChanges的Component的片段:

export class MyHeroComponent implements OnChanges {
  @Input() hero: Hero;
  @Input() power: string;

如果更改hero.name,则不会调用OnChanges。如果你改变了力量,它就会被召唤。

那么,如果您想要观察像英雄这样的对象的任何属性的更改,建议的解决方案是什么?听起来你可以用$ scope。$ watch在AngularJS 1.x中做一些事情,虽然我不确定这是用于观看个别属性还是你可以观看整个对象。但看起来它可能不是AngularJS 2.0中的一个选项,没有$ scope变量可用。

我的目标是在数据模型中的任何值发生变化时运行代码。这是为了编写一个通用框架,用于显示带有自定义数据对象的自定义数据输入屏幕,其中数据输入屏幕可以提供自己的验证脚本,指示下一个屏幕的脚本,等等。我想调用当底层数据对象的任何属性发生变化时,某些脚本会发生变化,这意味着我无法放置任何类型的" watch"在数据的每个属性上(因为通用框架不知道这些属性是什么)。

请注意,我是AngularJS 1.x和AngularJS 2.0的新手,我试图绕过他们。我认为有一个名为Observable的概念可能适用于此,但我还不完全确定这是否与从(例如)数据服务中逐步检索结果或观察对象的更改有关。如果我忽视了一些显而易见的事情或者没有清楚地表达自己,我表示歉意。我的背景是.NET,所以我试图将我的技能集映射到Angular概念。

0 个答案:

没有答案
相关问题