2016-03-21 32 views

回答

2

1.1.0版及更高版本(從16年5月11日)

隨着1.1.0版及更高版本,你必須使用$recompute()方法,做同樣的東西,舊的(見下文) $serverRefresh()方法。

您可以在Angular-Wakanda Entity API Reference找到它的文檔。

版本< 1.1.0

在角Wakanda的當前版本(1.0.4),你仍然可以做到這一點對你的實體調用$serverRefresh()

var entity = ds.Product.$create(); 
entity.$serverRefresh().$promise.then(function() { 
    //Your entity is updated with calculated attributes filled, and right events executed 
}); 

做什麼$serverRefresh()如下:

  • 在一個新創建的屬性(尚未保存),它將觸發init然後clientrefresh事件服務器端,然後更新客戶端實體
  • 在已保存的實體上,它將觸發clientrefresh事件服務器端,然後更新客戶端實體

事實上,它已被棄用,將被刪除。但是,它將在1.1.0版本中被另一個具有相同行爲的,記錄完好並且不明確的方法所取代。

+0

謝謝。我會測試並提供反饋。聽起來不錯。新版本的回購是否是私人的? – Ganbin

+0

@Ganbin是的,它現在是私人的,它將很快出版。 – Blackus

0

您應該在您的實體上使用$fetch()方法,它將獲取它並更新其所有屬性,然後應用您的修改並調用$ save()。

另請參閱: angular-wakanda doc

+0

$ fetch方法不會觸發init事件。 – Ganbin

+0

在服務器的內存中創建一個新的實體後,觸發init事件。 可以使用此事件來初始化屬性值, 要init事件的「姓氏」屬性相關聯: model.Employee.lastName.events.init =函數(事件){ this.lastName =「「; } 當您使用$ create創建新實體時,會觸發init事件。 –

+0

謝謝,我知道這一切。我只是無法用角連接器觸發這個init事件。在V1存在之前,我正在使用Wakanda(2012)。我完全瞭解Wakanda工作流程。 $ fetch方法不能應用於尚未創建並存儲在數據庫中的新實體。 – Ganbin

1

從現在開始$ serverRefresh()是一個棄用的功能,並會從角Wakanda連接器的下一個版本1.1.0被明確刪除。 您可以在實體上使用$ fetch()方法,它會再次獲取並更新其所有屬性。然後應用您的修改並調用$ save()。 對於新創建的實體,您可以進行如下:

  var newProduct = ds.Product.$create(); 
      newProduct.productName = "myProductName"; 
      newProduct.price = 5.5; 
      newProduct.$save(); 

這$保存()觸發事件的init()。

+0

$ create方法不會觸發init事件。 – Ganbin

+0

它的確如此,我剛剛測試過它,你確定你正在公開init事件嗎? 如果你這樣做,添加一個斷點,看看調試器是否運行。 –

+0

這很奇怪。在我這邊,$ create方法不會觸發init方法。我已經公開了它(即使我從來不需要設置事件服務器端的範圍,對我來說這聽起來很奇怪)$ create方法不會對服務器執行任何調用,所以它如何觸發任何事情?你確定你沒有保存實體嗎?導致保存將甚至觸發初始化。但在我的情況下,我想在保存之前初始化一些文件。 – Ganbin

相關問題