我正在使用Angular 1.3中的$ resource。可以在新的角度資源上僞造一個承諾嗎?
我有一堆控制器與資源對象一起工作的方法。
當檢索狀態很重要時,這些方法使用資源的$ promise屬性來確保它們僅在檢索後處理對象。這些與現有的和更新的資源對象都可以正常工作。
var ProposalResource = $resource(proposalUrl, {id: '@id'}, {'update': {method: 'PUT'}});
資源對象由ProposalResource.get({id:...
獲得。
但是,當我使用new ProposalResource(...
創建新資源對象以創建新對象時,這些方法失敗,因爲$ promise屬性未定義。
我已經通過將新資源對象上的$ promise屬性設置爲已解決的承諾來解決此問題。
這似乎工作確定,但它感覺像一個討厭的kludge。顯式檢查是否在所有其他方法中定義了$ promise屬性的選項更具吸引力。
我做對了嗎?
您應該提供更多關於您實際正在做什麼的細節。 '$ resource'創建一個資源「類」,然後可以用它來創建資源實例。那些實例從一開始就有'promise'屬性,所以你的問題不會存在。也許你正在將'$ resource'包裝進某些東西,這可以解釋'新的ProposalResource()'。 – zeroflagL 2014-11-21 09:42:30
我已經進一步澄清。 $ promise屬性僅在獲取現有對象時才存在,我的問題是我需要將新對象與現有對象保持一致 - 根據用戶對它的操作,可能不需要保存新對象。 – 2014-11-22 01:52:28
我明白。那麼使用@TomMcGeehon提出的'q.when()'方法似乎是一個合理的解決方案。另一個可能是裝飾'$ resource',以便所有資源都具有'$ promise'屬性。這是你所做的一切,但只有一次;) – zeroflagL 2014-11-22 15:08:39