2013-04-22 45 views
0

不太清楚,如果這是一個AngularJS或這裏BreezJs問題...breezejs hasChangesChanged事件

我有一個控制器中,我做到以下幾點:

$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'); 
    }); 

這是當我在查看更改值一樣,他們修改的對象上的$範圍,但不是實際的實體......我在想什麼?

+0

首先,您錯過了一個實時代碼示例,可能是http://plnkr.co/。 – 2013-04-22 12:34:31

+0

很難用微風把小提琴放在一起,我需要一個web服務來返回元數據。你在上面的代碼中不瞭解什麼?我可以更詳細地解釋。 – Sam 2013-04-22 14:25:34

+0

@sam - 我有一個可以分叉的潛水員。它達到Todo樣本,應該足以讓您證明問題。 pkozlowski - 我們很快將提供一套強盜和jsFiddles來幫助人們開始。我同意這是迄今爲止人們澄清和重現問題的最佳方式。 – Ward 2013-04-22 17:36:39

回答

1

所以在玩這個事件之後,我發現了兩件事。其實爲了確保我的代碼不是問題,我也調試了John Papa的Hot Towel應用程序,因爲他也使用微風。行爲與我的應用程序相同。

  1. 當我創建一個新實體時,會觸發hasChangesChanged事件。然後,當我在表單的控件中輸入綁定到此實體屬性的數據時,事件不會被觸發。

  2. 當我編輯現有的實體時,hasChangesChanged事件只在我修改屬性(如果我在文本框中編輯值)時觸發。

所以,人們可以爭辯說,hasChangesChanged事件不應該在第一種情況中,直到用戶開始實際填充數據的觸發。但我可以忍受這一點。

+0

僅當實體將entityState更改爲需要保存時觸發hasChangesChanged - 如果添加的實體具有更改的屬性,則保存要求未更改,但具有第一個屬性更改的現有實體需要保存。有關更詳細的信息,請參閱entityChanged事件 – Brent 2016-03-19 23:07:42