不太确定这是否是AngularJS或BreezJs问题......
我有一个控制器,我在其中执行以下操作:
$scope.mandat = domiciliationService.createMandat();
并在domiciliationService中:
function createMandat () {
return manager.createEntity('Mandate');
}
我的视图绑定到$ scope.mandat,当我更改绑定到$ scope.mandat的某个属性的文本框中的值时,我可以看到它反映在实际对象上(通过显示值一个跨度)。到目前为止一切都很好。
但是,永远不会引发hasChangesChanged事件。在服务中,这是我订阅的方式:
manager.hasChangesChanged.subscribe(function (args) {
var hasChangesChanged = args.hasChanges;
var entityManager = args.entityManager;
alert('changed');
});
就像我在视图中更改值时,他们修改$ scope上的对象但不修改实际实体...我缺少什么?
答案 0 :(得分:1)
所以在玩了这个事件后,我发现了两件事。实际上,为了确保我的代码不是问题,我调试了John Papa的Hot Towel应用程序,因为他也使用了微风。行为与我的应用程序相同。
当我创建新实体时,会触发hasChangesChanged事件。然后,当我在表单的控件中输入绑定到此实体属性的数据时,不会触发该事件。
当我编辑现有实体时,只有当我修改属性时才触发hasChangesChanged事件(如果我在文本框中编辑值)。
因此,有人可能会争辩说,在用户开始实际填充数据之前,不应在第一个场景中触发hasChangesChanged事件。但我可以忍受。