AngularJS 中的揭示模块模式有效,但 promises 除外

Revealing module pattern in AngularJS works except for promises

我正在使用 AngularJS 开发一个项目。我们正在考虑使用揭示模块模式,这样我们就可以在我们的控制器和服务中拥有私有功能。除了 promises/async 数据外,一切都按预期工作。

这是一个例子:

export function SomeController( angularDependencies ) {
  'ngInject' 

  const path = $stateParams.path, // this works fine
        data = someService.getPromise(path) // this should return a promise

  return {
    path,
    data // returns {} instead of a promise
  }
}

我的问题是:有没有办法只在我完成所有承诺后才执行 return?像这样:

Promises.all(allPromises).then((res) => {
  return { 
    path,
    'data': res
  }
})

我愿意使用 $q、rxjs、下划线,任何可以让它工作的东西。

更新:我将数据更改为:

const path = $stateParams.path,
      data = Promise.resolve(someService.getPromise(path))

现在我有一个对象显示在 Angular 的范围内,这是一个进步,但它是一个奇怪的对象。我想要的所有数据都在一个对象中,_v

所以我认为我正朝着正确的方向前进,但如果我发现任何新内容,我会更新它。

这是我最后做的。

export function SomeController( angularDependencies ) {
  'ngInject' 

  const path = $stateParams.path, // this works fine
    data = someService.getPromise(path) // returns a promise

  return {
    path,
    data // sends back a promise
  }
}

因此,一旦控制器 return 实现了承诺,我就使用过滤器将其加载到 html 中: angular1-async-filter

这是Angular 2+中处理promise的方式,我只是在AngularJS中没有好的处理方式。

现在我可以 {{ someAsyncData | async }} 并且得到我想要的结果。

所以这个问题的答案是我无法解决承诺,然后 return 它作为我模块的一部分,但我可以找到一种方法来处理模块外的承诺。