0

我有一个 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”+ items 的行打印出 item 未定义。请帮我理解为什么。

4

1 回答 1

2

您没有从解析函数 (!) 返回任何内容。该函数的结果items被注入到模态中,并且由于您没有返回任何内容,因此没有注入任何内容。如果你正在使用异步 API,你可以返回一个 Promise,并且 modal 将被注入一个 Promise Resolution 的值。

简而言之:你需要在你的 resolve 函数中返回一些东西:

resolve: {
                items: function () {

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

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

于 2014-03-21T14:38:49.237 回答