我正在使用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