使用angular-bootstrap调用$ modal对话框时解析服务的依赖关系

时间:2014-03-21 13:55:09

标签: angularjs twitter-bootstrap angular-bootstrap

我有一个角度引导模态对话框,如下所示:

            var modalInstance = $modal.open({
            templateUrl: '/views/core/common/modalProjectChange.html',  
            controller: ModalChooseProjectCtrl,
            resolve: {
                items: function () {
                    ProjectConfigurationService.getAll("", function (_prjl) {
                        return _prjl;
                    });
                }
            ...
        });

其中

  var ModalChooseProjectCtrl = function ($scope, $modalInstance, items) {  

        console.log('called ModalChoose, items' + items);
        angular.forEach(items, function (value, key) {
            // do stuff...
        });
      }

尽管items函数执行正常(我可以看到来自调用的ProjectConfigurationService接收数组的网络连接),该行名为ModalChoose,items' +项目打印项目未定义。请帮我理解原因。

1 个答案:

答案 0 :(得分:2)

您没有从resolve函数(!)返回任何内容。 items函数的结果被注入模态,因为你没有返回任何东西,所以没有注入。如果您正在使用异步API,则可以返回一个promise,并且将为模态注入一个promise promise值。

简而言之:你需要在你的解析函数中返回一些内容:

resolve: {
                items: function () {

                    //RETRUN missing here
                    return ProjectConfigurationService.getAll("", function (_prjl) {
                        return _prjl;
                    });
                }
            ...

在您的情况下,您似乎正在使用异步API,因此您需要确保您的服务使用promises(getAll应该返回一个承诺,回调在这里不起作用。)