【问题标题】:$routeProvider resolve is not getting object from promise$routeProvider resolve 没有从 Promise 中获取对象
【发布时间】:2017-04-06 02:41:34
【问题描述】:

我在尝试从 Promise 中获取对象数组时遇到问题。我有两个问题。首先,当GetAccounts()AccountService 中被调用时,它返回2 个对象。在解析中,当我检查变量结果时,它没有 2 个对象。其次,当控制器被实例化时,它给了我这个错误:accounts is not defined。谁能告诉我我做错了什么?提前致谢。

AccountService.js

app.factory('AccountService', ['$http', function ($http) {
    return {
        GetAccounts: function () {
            return $http.get('api/Account/GetAccounts')
            .then(function success(response) {
                return response.data;
            }, function error(response) {
                return console.log("Oops!");
            });
        }
    };
}]);

AdminController.js

app.component('admin', {
    templateUrl: 'Content/app/components/admin/Admin.html',
    bindings: {
        accounts: '<'
    },
    controller: function () {
        this.accounts = accounts;
    }
})

route.js

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/admin', {
        template: '<admin accounts="$resolve.GetAccounts"></admin>',
        resolve: {
            GetAccounts: ['AccountService', function (AccountService) {
                var result = AccountService.GetAccounts();

                return result;
            }]
        }
    })
}]);

【问题讨论】:

  • 你真的创建了 API 吗?
  • 请注意GetAccounts 函数将被拒绝的承诺转换为成功的承诺。见Angular execution order with $q – georgeawg
  • 是的,我已经创建了 API,这就是为什么我能够获得 2 个对象 @floor
  • @georgeawg 是的,这是我工作帐户中的另一篇帖子,但由于某种原因,我无法获取这些对象。与我的另一篇文章的唯一区别是我使用了 webpack 而我没有使用这个

标签: angularjs angular-promise route-provider


【解决方案1】:

进行以下更改以使其正常工作。

AdminController.js

app.component('admin', {
    templateUrl: 'Content/app/components/admin/Admin.html',
    bindings: {
        accounts: '<'
    }    })

route.js

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/admin', {
        template: 'template.html',
        resolve: {
            GetAccounts: ['AccountService', function (AccountService) {
                var result = AccountService.GetAccounts();

                return result;
            }]
        },
        controller:['$scope','GetAccounts',function($scope, GetAccounts){
           $scope.accounts = GetAccounts;
        }]
    })
}]);

模板.html

<div>
<admin accounts="accounts"></admin>
</div>

【讨论】:

    猜你喜欢
    • 2020-10-12
    • 2019-01-20
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多