Coffeescript 在子控制器中使用来自父控制器的多个HTTP请求结果

Coffeescript 在子控制器中使用来自父控制器的多个HTTP请求结果,coffeescript,angularjs,couchdb,Coffeescript,Angularjs,Couchdb,如何在子控制器中使用来自父控制器的多个异步HTTP请求的结果?结果将在视图中解析,但不会在另一个控制器中解析。下面的代码片段是为了简洁起见,我尝试使用literate生成一个最小的示例 我意识到要复制它有点困难,因为需要运行CouchDB并为它添加一个带有设计文档的数据库,但我希望您可以不这样做而遵循这个示例 我已经试着把所有相关的评论都包含在这个片段中,所以对于它的长度我深表歉意 {{db.name} {{foo.name} app=angular.module'test'

如何在子控制器中使用来自父控制器的多个异步HTTP请求的结果?结果将在视图中解析,但不会在另一个控制器中解析。下面的代码片段是为了简洁起见,我尝试使用literate生成一个最小的示例

我意识到要复制它有点困难,因为需要运行CouchDB并为它添加一个带有设计文档的数据库,但我希望您可以不这样做而遵循这个示例

我已经试着把所有相关的评论都包含在这个片段中,所以对于它的长度我深表歉意


  • {{db.name}
{{foo.name} app=angular.module'test',['ngResource','ngRoute'] CouchDB文档的ngResource定义;URL是相对的,因为 每个文档都是从主应用程序数据库设计内部提供的 文档作为附件。 app.factory“Doc”[“$resource”,($resource)-> $resource'/:db/:doc',{doc:'@_id',rev:'@_rev'}, 将有许多CouchDB数据库,每个数据库包含具有 `键入值为“foo”的“foo”。然后要列出所有的“foo”,有一个名为“foos”的视图` 在定义为:`emit(doc.\u id,doc)if doc.type的每个数据库中 是'foo'`。以下附加方法用于使用该视图。 查询: 方法:“GET”,url:“/:db/\u design/ddoc/\u view/:view”,isArray:true, 回应:(回应)-> angular.fromJson(response).rows.map(row)->row.value ] 此父控制器数据需要可用于子控制器。 app.controller“parentCtrl”,($scope,Doc)-> $scope.dbs=[] Doc.get db:'appdb',Doc:'u design/app\u ddoc',(app\u ddoc)-> 主应用程序设计文档包含一个键'db_ids',其值为 数据库ID数组(例如,`['c-12345','c-54321',…]`)。实际姓名 这些数据库包含在它们的设计文档中,然后需要 分开取。 angular.forEach app_ddoc.db_id,(db_id)-> Doc.get db:db_id,Doc:“_design/ddoc”,(ddoc)-> Doc.query db:db_id,视图:'foos',(foos)-> $scope.dbs.push id:db_id,name:ddoc.name,foos:foos app.controller'childCtrl',($scope,$routeParams,Doc)-> 要显示当前所选“foo”的信息,不应存在任何 从服务器重新获取其数据的原因,因为这已经完成 在“parentCtrl”中。理想情况下,从“$scope.dbs”中过滤掉它。 $scope.foo=$scope.dbs.filter((db)->db.id是$routeParams.db).pop() .foos.filter(foo)->foo.id是$routeParams.doc 唉,“$scope.dbs”可能还没有解决,正因为如此,一个 显示错误:`error:'undefined'不是对象(正在评估) “$scope.dbs.filter”)`。 app.config['$routeProvider',($routeProvider)-> $routeProvider.when'/:db/foos/:doc', 模板URL:'foo' 控制器:childCtrl ] angular.element(document.ready->angular.bootstrap文档,['test']