我遇到这种情况,我需要在模型更改时捕获事件,但是我的指令中的初始化会过早地触发事件。
Plunker:http://plnkr.co/edit/2T0Rq6yOXHWxQAOv8RpX?p=preview
我怎样才能克服这一点?设置一些标志,但是如何/在哪里?其他方法?
谢谢!
更新
我在指令中添加了value
属性,这样您就可以更好地理解初始化的含义。
答案 0 :(得分:3)
我终于解决了!
Plunker:http://plnkr.co/edit/a5fzJi7VzAytj3Urj06L?p=preview
Angular中的form
指令有一个名为$dirty
的属性。它以false开头,当您更改输入的值时,ngModel
指令使表单“脏”。首先,我尝试在我的指令中使用ngModel
,但我最终要求直接使用form
。
PS。这仅在第一次更改时触发,但这正是我所需要的。
答案 1 :(得分:1)
您将data
定义为
$scope.data = { x: 51 }
稍后在解析Angular时会检测到还有两个属性:y
和z
并且它们未定义。在指令中,在这种情况下将它们设置为0
。所以你的数据对象变成了
{ x: 51, y: 0, z: 0 }
显然$scope.data
已发生变化,观察者应该开火。这就是它发生的原因。
要解决此问题,您只需使用初始data
和y
值定义z
:
$scope.data = { x: 51, y: 0, z: 0 };
答案 2 :(得分:0)