0

不太确定这是 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 上的对象,而不是实际的实体......我错过了什么?

4

1 回答 1

1

所以在玩了这个活动之后,我想出了两件事。实际上,为了确保我的代码没有问题,我已经调试了 John Papa 的 Hot Towel 应用程序,因为他也使用了微风。并且行为与我的应用程序中的相同。

  1. 当我创建一个新实体时,会触发 hasChangesChanged 事件。然后,当我在绑定到该实体属性的表单控件中输入数据时,不会触发该事件。

  2. 当我编辑现有实体时,只有在我修改属性时才会触发 hasChangesChanged 事件(如果我在文本框中编辑值)。

因此,有人可能会争辩说,在用户开始实际填写数据之前,不应在第一种情况下触发 hasChangesChanged 事件。但我可以忍受。

于 2013-04-26T10:17:02.003 回答