Angularjs 必须打开两次,才能使用角度带模式显示数据

Angularjs 必须打开两次,才能使用角度带模式显示数据,angularjs,angular-strap,Angularjs,Angular Strap,我在使用角带模式时遇到问题。我正在尝试使用$http获取数据,并将其结果显示到模式中。奇怪的是,我必须打开模态两次才能显示数据。我有以下代码: .controller('ModalCtrl', ['$scope', '$modal', 'Api', function(scope, modal, Api) { scope.open = function (gameId) { Api.getGameByGameId(gameId).then(function(result) {

我在使用角带模式时遇到问题。我正在尝试使用$http获取数据,并将其结果显示到模式中。奇怪的是,我必须打开模态两次才能显示数据。我有以下代码:

.controller('ModalCtrl', ['$scope', '$modal', 'Api', function(scope, modal, Api) {
  scope.open = function (gameId) {

    Api.getGameByGameId(gameId).then(function(result) {
            console.log(result);
            scope.items = result.data;
        }, function(result) {
            console.log(result);
        });

    var modalInstance = modal.open({
      templateUrl: 'myModalContent.html',
      controller: 'ModalInstanceCtrl',
      resolve: {
        items: function () {        
          return scope.items;
        }
      }
    });

    modalInstance.result.then(function (selectedItem) {
        console.log(selectedItem);
      scope.selected = selectedItem;
    }, function () {
        console.log('Modal dismissed');
    });
  };
}])
.controller('ModalInstanceCtrl', ['$scope', '$modalInstance', 'items', function(scope, modalInstance, items) {
    console.log(items);
    scope.items = items;
}])

使用firebug控制台,我发现它在$http调用中首先触发console_log(items),然后触发console.log(result)。因此,当我再次打开模式时,它会显示数据。我如何同步我的$http,以便在什么时候第一个调用它?

好的,终于找到了答案。解决了我自己的问题

以下是我的解决方案:

var getGameDetail = {
        async: function() {
            var promise = Api.getGameByGameId(gameId).then(function(result) {
                    console.log(result);
                    return result.data;
                }, function(result) {
                    console.log(result);
                }); 
                return promise;
        }
    };

当$http调用返回时,您是否正在解析承诺?还要确保你的服务承诺得到回报。