ng-change只针对用户输入,并且在以编程方式对模型进行更改时不会触发,这实际上让我感到头疼。我正在使用一个用户输入表单,其中包含名称的单独部分,以及动态构建和订购的凭据。表单有一个“displayName”字段,在更改名称部分时会更新。这封装在一个我需要在更大的视图中使用的指令中。事情变得多毛了。我需要在我的指令中隐藏名称部分字段,并使用外部表单的名称字段。我认为通过连接一个函数来更新隐藏的文本输入字段以及我的displayName字段会很容易。然后我发现模型的程序化更改不会触发更改事件。
我尝试为其中一个名称字段创建一个监视器,看看是否可以让它更新displayName字段,但没有运气。
this.scope.$watch('provider.firstName', function (event) {
namePropertyChanged2(displayNameOverridden, displayName, provider, credentials);
});
当我更改firstName的输入字段时,它会修改指令的值'provider.firstName',并运行'namePropertyChanged2'函数。列出的代码在initialize函数中运行,其中'displayName'是从this.scope.provider.displayName分配的局部变量。监视分配要求我创建局部变量而不是传入控制器变量。不知道为什么,但无论如何。所以这个函数运行并且'displayName'用正确的值更新......并且它所绑定的输入字段不会更新。长号。
什么是理想的是在模型更改时手动触发更改事件,这将更新displayName并获得很多欢乐。