Javascript angularjs在创建后将参数传递给modal

Javascript angularjs在创建后将参数传递给modal,javascript,angularjs,Javascript,Angularjs,我使用angularjs的默认模式并传递参数[1,2,3] 但是我想在我的MainController中调用三个http请求,并将这些记录传递给modal。请求结果是异步的。我该怎么做 function MainController($modal){ var modalOptions = { templateUrl: 'templates/mytmp.html', controller: 'm

我使用angularjs的默认模式并传递参数[1,2,3]

但是我想在我的
MainController
中调用三个http请求,并将这些记录传递给modal。请求结果是异步的。我该怎么做

        function MainController($modal){
            var modalOptions = {
                templateUrl: 'templates/mytmp.html',
                controller: 'myController',
                size: size,
                resolve: {
                    items: [1,2,3]
                }
            };

            $modal.open(modalOptions);
        }

从工厂返回承诺并链接异步调用以产生同步效果,获取一条记录,将其推送到items数组中,然后请求下一条记录。重复这个。然后,当检索到所有记录并将其推送到modalOptions时,打开modal

function MainController($modal, $http){
   $http("getTwitterFriends").success(onTwitterSuccess);
   $http("getFacebookFriends").success(onFacebookSuccess);
   $http("getGmailPlusFriends").success(onGmailPlusSuccess);

   // I want to list of these records on Modal.
}

嘿,这是一个小插曲:

基本上,您希望使用$q链接THNS或更干净一点

  function MainController($modal){
                var modalOptions = {
                    templateUrl: 'templates/mytmp.html',
                    controller: 'myController',
                    size: size,
                    resolve: {
                        items: []
                    }
                };
                $http("getTwitterFriends").then(function(record1){ //get first record
                     modalOptions.resolve.items.push(record1);
                      $http("getFacebookFriends").then(function(record2){ //get second record
                          modalOptions.resolve.items.push(record2);
                          $http("getGmailPlusFriends").then(function(record3){ //get third record
                             modalOptions.resolve.items.push(record3);
                             $modal.open(modalOptions); //open modal
                          }
                      });

                });



            }
以及指向文档的链接:


$q

在模式中使用resolve,它返回这些承诺。。。另外,将对服务的http调用分离出来,并在控制器中使用该服务也是一个好主意,这是一棵漂亮的圣诞树……:)
 $q.all([
     SomeServiceWithPromises.someServiceMethodThatReturnsAPromise(),
     SomeServiceWithPromises.someOtherServiceMethodThatReturnsAPromise()
  ]).then(function(results){
    console.log(results, 'both results finished loadin...');
  });