代码之家  ›  专栏  ›  技术社区  ›  r3plica

ui路由器中的ng注释和解析方法

  •  0
  • r3plica  · 技术社区  · 7 年前

    我的解析方法有点问题,无法获得注入的服务。 我的代码如下所示:

    (function () {
        'use strict';
    
        angular.module('sapphire.sample-limits').config(routes);
    
        function routes($stateProvider) {
    
            console.log('sample limit routes have loaded');
    
            $stateProvider
                .state('sample-limits', list())
                .state('sample-limits.summary', summary())
                .state('sample-limits.summary.settings', settings())
                .state('sample-limits.summary.references', references());
    
            //////////////////////////////////////////////////
    
            function list() {
                console.log('trying to load the list sample limit route');
    
                return {
                    url: '/sample-limits',
                    templateUrl: 'app/sample-limits/sample-limits.html',
                    controller: 'SampleLimitController',
                    controllerAs: 'controller',
                    resolve: {
                        categories: categories
                    },
                    data: {
                        claims: ['Sampling'],
                        pageTitle: 'Sample limits'
                    }
                };
            };
    
            function summary() {
                return {
                    url: '/{category}',
                    templateUrl: 'app/sample-limits/sample-limits-summary.html',
                    controller: 'SampleLimitSummaryController',
                    controllerAs: 'controller',
                    resolve: {
                        activate: activate
                    },
                    data: {
                        claims: ['Sampling'],
                        pageTitle: 'Sample limits - Summary'
                    }
                };
            };
    
            function settings() {
                return {
                    url: '/settings',
                    views: {
                        '@sample-limits': {
                            templateUrl: 'app/sample-limits/sample-limits-settings.html',
                            controller: 'SampleLimitSettingsController',
                            controllerAs: 'controller'
                        }
                    },
                    resolve: {
                        activate: activate
                    },
                    data: {
                        claims: ['Sampling'],
                        pageTitle: 'Sample limits - Settings'
                    }
                };
            };
    
            function references() {
                return {
                    url: '/references/{reference}',
                    views: {
                        '@sample-limits': {
                            templateUrl: 'app/sample-limits/sample-limits-references.html',
                            controller: 'SampleLimitReferencesController',
                            controllerAs: 'controller'
                        }
                    },
                    resolve: {
                        activate: activate
                    },
                    data: {
                        claims: ['Sampling'],
                        pageTitle: 'Sample limits - Groups'
                    }
                };
            };
    
            //////////////////////////////////////////////////
    
            function categories(sampleLimitsService) {
                return sampleLimitsService.list();
            };
    
            function activate($stateParams, categories, selections) {
                categories.forEach(function (category) {
                    if (category === $stateParams.category) {
                        if (selections.selected.indexOf(category) === -1) {
                            selections.select(null, category);
                        }
                    }
                });
                return true;
            };
        };
    })();
    

    但是 ng注释 没有注入服务。我知道我做错了什么,但有人能帮我弄清楚是什么吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   r3plica    7 年前

    我刚刚添加了 /* @ngInject */ 在每种方法之前进行评论,并证明其有效:

    (function () {
        'use strict';
    
        angular.module('sapphire.sample-limits').config(routes);
    
        function routes($stateProvider) {
    
            $stateProvider
                .state('sample-limits', list())
                .state('sample-limits.summary', summary())
                .state('sample-limits.summary.settings', settings())
                .state('sample-limits.summary.references', references());
    
            //////////////////////////////////////////////////
    
            function list() {            
                return {
                    url: '/sample-limits',
                    templateUrl: 'app/sample-limits/sample-limits.html',
                    controller: 'SampleLimitController',
                    controllerAs: 'controller',
                    resolve: {
                        categories: categories
                    },
                    data: {
                        claims: ['Sampling'],
                        pageTitle: 'Sample limits'
                    }
                };
            };
    
            function summary() {
                return {
                    url: '/{category}',
                    templateUrl: 'app/sample-limits/sample-limits-summary.html',
                    controller: 'SampleLimitSummaryController',
                    controllerAs: 'controller',
                    resolve: {
                        activate: activate
                    },
                    data: {
                        claims: ['Sampling'],
                        pageTitle: 'Sample limits - Summary'
                    }
                };
            };
    
            function settings() {
                return {
                    url: '/settings',
                    views: {
                        '@sample-limits': {
                            templateUrl: 'app/sample-limits/sample-limits-settings.html',
                            controller: 'SampleLimitSettingsController',
                            controllerAs: 'controller'
                        }
                    },
                    resolve: {
                        activate: activate
                    },
                    data: {
                        claims: ['Sampling'],
                        pageTitle: 'Sample limits - Settings'
                    }
                };
            };
    
            function references() {
                return {
                    url: '/references/{reference}',
                    views: {
                        '@sample-limits': {
                            templateUrl: 'app/sample-limits/sample-limits-references.html',
                            controller: 'SampleLimitReferencesController',
                            controllerAs: 'controller'
                        }
                    },
                    resolve: {
                        activate: activate
                    },
                    data: {
                        claims: ['Sampling'],
                        pageTitle: 'Sample limits - Groups'
                    }
                };
            };
        };
    
        //////////////////////////////////////////////////
    
        /* @ngInject */
        function categories(sampleLimitsService) {
            return sampleLimitsService.list();
        };
    
        /* @ngInject */
        function activate($stateParams, categories, selections) {
            categories.forEach(function (category) {
                if (category === $stateParams.category) {
                    if (selections.selected.indexOf(category) === -1) {
                        selections.select(null, category);
                    }
                }
            });
            return true;
        };
    })();