繁体   English   中英

AngularJS UI路由器无法解析服务调用

[英]AngularJS ui-router not resolve service call

我正在尝试在我的ui路由器状态提供程序中使用解析功能。 我将其配置如下:

app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) {
...
$stateProvider.state('expositions', {
        url: '/Expositions',
        views: {
            "container": {
                templateUrl: '/views/expositions.html', 
                resolve: {
                    expositions: function ($http) {
                        return $http.get('/api/site/expositions').then(
                            function (response) {
                                console.log("DATA", response.data);
                                return response.data;
                            },
                            function (error) {
                                console.log("ERROR", error);
                            })
                    }
                }
            }
        }
    })
...
}

在这种情况下,当我单击博览会链接时,不会调用解决方法,并且不会执行导航:什么也没有发生。

我还尝试使用工厂(资源服务)来配置它,如下所示:

app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) {
...
$stateProvider.state('expositions', {
        url: '/Expositions',
        views: {
            "container": {
                templateUrl: '/views/expositions.html', 
                resolve: {
                    expositions: function (Resources) {
                        console.log("DATA", Resources);
                        return Resources.expositions();
                    }
                }
            }
        }
    })
...
}

资源服务在单独的文件中定义,如下所示:

resourcesService.js

(function () {
    'use strict';

    angular
        .module('site')
        .factory('Resources', ['$resource',
            function ($resource) {
                return $resource('/api/site/:action/:id', {}, {

                    ...

                    expositions: {
                        method: 'GET',
                        params: { action: "expositions" },
                        isArray: true
                        //transformResponse: function (data) {
                        //    return angular.fromJson(data).list
                        //}
                    },

                    ...
                });
            }
        ]);
})();

同样在这种情况下,什么也不会发生,并且不会调用resolve函数。

我想念什么?

提前谢谢大家!

尝试给这个

expositions: ['$http',function ($http) {

像这样

resolve: {
                expositions: ['$http',function ($http) {
                    return $http.get('/api/site/expositions').then(
                        function (response) {
                            console.log("DATA", response.data);
                            return response.data;
                        }],
                        function (error) {
                            console.log("ERROR", error);
                        })
                }

让我知道这是否有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM