【问题标题】:injecting $http into angular "usestrict" service将 $http 注入角度“usestrict”服务
【发布时间】:2016-07-21 21:44:42
【问题描述】:

我正在尝试将 $http 注入到我的 Angular 服务中,该服务从我的控制器调用以从我们的 API 填充数据。我继续遇到这个错误:

错误:[$injector:strictdi] 信息服务未使用显式注释,无法在严格模式下调用 http://errors.angularjs.org/1.5.7/$injector/strictdi?p0=Infoservice

下面是定义为严格的服务。如何正确注入 $http?

服务必须严格。

'use strict';

angular.module('bitsGantt')
    .service('Infoservice', function Infoservice($http) {
        return {
            getSampleData: function() {
            	// $http({
            	// 	method: 'GET',
            	// 	URL: 
            	// })
                return [
                        // Order is optional. If not specified it will be assigned automatically
                        {name: 'Milestones', height: '3em', sortable: false, drawTask: false, classes: 'gantt-row-milestone', color: '#45607D', tasks: [
                            // Dates can be specified as string, timestamp or javascript date object. The data attribute can be used to attach a custom object
                            {name: 'Kickoff', color: '#93C47D', from: '2016-10-07T09:00:00', to: '2016-10-07T10:00:00', data: 'Can contain any custom data or object'},
                            {name: 'Concept approval', color: '#93C47D', from: new Date(2016, 9, 18, 18, 0, 0), to: new Date(2016, 9, 18, 18, 0, 0), est: new Date(2016, 9, 16, 7, 0, 0), lct: new Date(2016, 9, 19, 0, 0, 0)},
                            {name: 'Development finished', color: '#93C47D', from: new Date(2016, 10, 15, 18, 0, 0), to: new Date(2016, 10, 15, 18, 0, 0)},
                            {name: 'Shop is running', color: '#93C47D', from: new Date(2016, 10, 22, 12, 0, 0), to: new Date(2016, 10, 22, 12, 0, 0)},
                            {name: 'Go-live', color: '#93C47D', from: new Date(2016, 10, 29, 16, 0, 0), to: new Date(2016, 10, 29, 16, 0, 0)}
                        ], data: 'This here can contain any custom data, or even an object!'},
                        {name: 'Status meetings', tasks: [
                            {name: 'Bits Demo #1', color: '#9FC5F8', from: new Date(2016, 9, 25, 15, 0, 0), to: new Date(2016, 9, 25, 18, 30, 0)},
                            {name: 'Bits Demo #2', color: '#9FC5F8', from: new Date(2016, 10, 1, 15, 0, 0), to: new Date(2016, 10, 1, 18, 0, 0)},
                            {name: 'Bits Demo #3', color: '#9FC5F8', from: new Date(2016, 10, 8, 15, 0, 0), to: new Date(2016, 10, 8, 18, 0, 0)},
                            {name: 'Bits Demo #4', color: '#9FC5F8', from: new Date(2016, 10, 15, 15, 0, 0), to: new Date(2016, 10, 15, 18, 0, 0)},
                            {name: 'Bits Demo #5', color: '#9FC5F8', from: new Date(2016, 10, 24, 9, 0, 0), to: new Date(2016, 10, 24, 10, 0, 0)}
                        ]},
                        {name: 'Kickoff', movable: {allowResizing: false}, tasks: [
                            {name: 'Day 1', color: '#9FC5F8', from: new Date(2016, 9, 7, 9, 0, 0), to: new Date(2016, 9, 7, 17, 0, 0),
                                progress: {percent: 100, color: '#3C8CF8'}, movable: false},
                            {name: 'Day 2', color: '#9FC5F8', from: new Date(2016, 9, 8, 9, 0, 0), to: new Date(2016, 9, 8, 17, 0, 0),
                                progress: {percent: 100, color: '#3C8CF8'}},
                            {name: 'Day 3', color: '#9FC5F8', from: new Date(2016, 9, 9, 8, 30, 0), to: new Date(2016, 9, 9, 12, 0, 0),
                                progress: {percent: 100, color: '#3C8CF8'}}
                        ]},
                        {name: 'Create concept', tasks: [
                            {name: 'Create concept', priority: 20, content: '<i class="fa fa-cog" ng-click="scope.handleTaskIconClick(task.model)"></i> {{task.model.name}}', color: '#F1C232', from: new Date(2016, 9, 10, 8, 0, 0), to: new Date(2016, 9, 16, 18, 0, 0), est: new Date(2016, 9, 8, 8, 0, 0), lct: new Date(2016, 9, 18, 20, 0, 0),
                                progress: 100}
                        ]},
                        {name: 'Finalize concept', tasks: [
                            {id: 'Finalize concept', name: 'Finalize concept', priority: 10, color: '#F1C232', from: new Date(2016, 9, 17, 8, 0, 0), to: new Date(2016, 9, 18, 18, 0, 0),
                                progress: 100}
                        ]},
                        {name: 'Development', children: ['Sprint 1', 'Sprint 2', 'Sprint 3', 'Sprint 4'], content: '<i class="fa fa-file-code-o" ng-click="scope.handleRowIconClick(row.model)"></i> {{row.model.name}}'},
                        {name: 'Sprint 1', tooltips: false, tasks: [
                            {id: 'Product list view', name: 'Product list view', color: '#F1C232', from: new Date(2016, 9, 21, 8, 0, 0), to: new Date(2016, 9, 25, 15, 0, 0),
                                progress: 25, dependencies: [{to: 'Order basket'}, {from: 'Finalize concept'}]}
                        ]},
                        {name: 'Sprint 2', tasks: [
                            {id: 'Order basket', name: 'Order basket', color: '#F1C232', from: new Date(2016, 9, 28, 8, 0, 0), to: new Date(2016, 10, 1, 15, 0, 0),
                                dependencies: {to: 'Checkout'}}
                        ]},
                        {name: 'Sprint 3', tasks: [
                            {id: 'Checkout', name: 'Checkout', color: '#F1C232', from: new Date(2016, 10, 4, 8, 0, 0), to: new Date(2016, 10, 8, 15, 0, 0),
                                dependencies: {to: 'Login & Signup & Admin Views'}}
                        ]},
                        {name: 'Sprint 4', tasks: [
                            {id: 'Login & Signup & Admin Views', name: 'Login & Signup & Admin Views', color: '#F1C232', from: new Date(2016, 10, 11, 8, 0, 0), to: new Date(2016, 10, 15, 15, 0, 0),
                                dependencies: [{to: 'HW'}, {to: 'SW / DNS/ Backups'}]}
                        ]},
                        {name: 'Hosting'},
                        {name: 'Setup', tasks: [
                            {id: 'HW', name: 'HW', color: '#F1C232', from: new Date(2016, 10, 18, 8, 0, 0), to: new Date(2016, 10, 18, 12, 0, 0)}
                        ]},
                        {name: 'Config', tasks: [
                            {id: 'SW / DNS/ Backups', name: 'SW / DNS/ Backups', color: '#F1C232', from: new Date(2016, 10, 18, 12, 0, 0), to: new Date(2016, 10, 21, 18, 0, 0)}
                        ]},
                        {name: 'Server', parent: 'Hosting', children: ['Setup', 'Config']},
                        {name: 'Deployment', parent: 'Hosting', tasks: [
                            {name: 'Depl. & Final testing', color: '#F1C232', from: new Date(2016, 10, 21, 8, 0, 0), to: new Date(2016, 10, 22, 12, 0, 0), 'classes': 'gantt-task-deployment'}
                        ]},
                        {name: 'Workshop', tasks: [
                            {name: 'On-side education', color: '#F1C232', from: new Date(2016, 10, 24, 9, 0, 0), to: new Date(2016, 10, 25, 15, 0, 0)}
                        ]},
                        {name: 'Content', tasks: [
                            {name: 'Supervise content creation', color: '#F1C232', from: new Date(2016, 10, 26, 9, 0, 0), to: new Date(2016, 10, 29, 16, 0, 0)}
                        ]},
                        {name: 'Documentation', tasks: [
                            {name: 'Technical/User documentation', color: '#F1C232', from: new Date(2016, 10, 26, 8, 0, 0), to: new Date(2016, 10, 28, 18, 0, 0)}
                        ]}
                   //close of return
                    ];
           //close of function         
            },
            getSampleTimespans: function() {
                return [
                        {
                            from: new Date(2016, 9, 21, 8, 0, 0),
                            to: new Date(2016, 9, 25, 15, 0, 0),
                            name: 'Sprint 1 Timespan'
                            //priority: undefined,
                            //classes: [],
                            //data: undefined
                        }
                   //close of return     
                    ];
          //close of function          
            }
      //close of main return      
        };
  //close of info service      
    })
;

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    尝试将您的函数包装在一个数组中,并将 $http 声明为该数组的第一个元素,如下所示:

    'use strict';
    
    angular.module('bitsGantt')
        .service('Infoservice', ['$http', function Infoservice($http) {
            return {
                getSampleData: function() {
                    // $http({
                    //  method: 'GET',
                    //  URL: 
                    // })
                    return [
                            // Order is optional. If not specified it will be assigned automatically
                            {name: 'Milestones', height: '3em', sortable: false, drawTask: false, classes: 'gantt-row-milestone', color: '#45607D', tasks: [
                                // Dates can be specified as string, timestamp or javascript date object. The data attribute can be used to attach a custom object
                                {name: 'Kickoff', color: '#93C47D', from: '2016-10-07T09:00:00', to: '2016-10-07T10:00:00', data: 'Can contain any custom data or object'},
                                {name: 'Concept approval', color: '#93C47D', from: new Date(2016, 9, 18, 18, 0, 0), to: new Date(2016, 9, 18, 18, 0, 0), est: new Date(2016, 9, 16, 7, 0, 0), lct: new Date(2016, 9, 19, 0, 0, 0)},
                                {name: 'Development finished', color: '#93C47D', from: new Date(2016, 10, 15, 18, 0, 0), to: new Date(2016, 10, 15, 18, 0, 0)},
                                {name: 'Shop is running', color: '#93C47D', from: new Date(2016, 10, 22, 12, 0, 0), to: new Date(2016, 10, 22, 12, 0, 0)},
                                {name: 'Go-live', color: '#93C47D', from: new Date(2016, 10, 29, 16, 0, 0), to: new Date(2016, 10, 29, 16, 0, 0)}
                            ], data: 'This here can contain any custom data, or even an object!'},
                            {name: 'Status meetings', tasks: [
                                {name: 'Bits Demo #1', color: '#9FC5F8', from: new Date(2016, 9, 25, 15, 0, 0), to: new Date(2016, 9, 25, 18, 30, 0)},
                                {name: 'Bits Demo #2', color: '#9FC5F8', from: new Date(2016, 10, 1, 15, 0, 0), to: new Date(2016, 10, 1, 18, 0, 0)},
                                {name: 'Bits Demo #3', color: '#9FC5F8', from: new Date(2016, 10, 8, 15, 0, 0), to: new Date(2016, 10, 8, 18, 0, 0)},
                                {name: 'Bits Demo #4', color: '#9FC5F8', from: new Date(2016, 10, 15, 15, 0, 0), to: new Date(2016, 10, 15, 18, 0, 0)},
                                {name: 'Bits Demo #5', color: '#9FC5F8', from: new Date(2016, 10, 24, 9, 0, 0), to: new Date(2016, 10, 24, 10, 0, 0)}
                            ]},
                            {name: 'Kickoff', movable: {allowResizing: false}, tasks: [
                                {name: 'Day 1', color: '#9FC5F8', from: new Date(2016, 9, 7, 9, 0, 0), to: new Date(2016, 9, 7, 17, 0, 0),
                                    progress: {percent: 100, color: '#3C8CF8'}, movable: false},
                                {name: 'Day 2', color: '#9FC5F8', from: new Date(2016, 9, 8, 9, 0, 0), to: new Date(2016, 9, 8, 17, 0, 0),
                                    progress: {percent: 100, color: '#3C8CF8'}},
                                {name: 'Day 3', color: '#9FC5F8', from: new Date(2016, 9, 9, 8, 30, 0), to: new Date(2016, 9, 9, 12, 0, 0),
                                    progress: {percent: 100, color: '#3C8CF8'}}
                            ]},
                            {name: 'Create concept', tasks: [
                                {name: 'Create concept', priority: 20, content: '<i class="fa fa-cog" ng-click="scope.handleTaskIconClick(task.model)"></i> {{task.model.name}}', color: '#F1C232', from: new Date(2016, 9, 10, 8, 0, 0), to: new Date(2016, 9, 16, 18, 0, 0), est: new Date(2016, 9, 8, 8, 0, 0), lct: new Date(2016, 9, 18, 20, 0, 0),
                                    progress: 100}
                            ]},
                            {name: 'Finalize concept', tasks: [
                                {id: 'Finalize concept', name: 'Finalize concept', priority: 10, color: '#F1C232', from: new Date(2016, 9, 17, 8, 0, 0), to: new Date(2016, 9, 18, 18, 0, 0),
                                    progress: 100}
                            ]},
                            {name: 'Development', children: ['Sprint 1', 'Sprint 2', 'Sprint 3', 'Sprint 4'], content: '<i class="fa fa-file-code-o" ng-click="scope.handleRowIconClick(row.model)"></i> {{row.model.name}}'},
                            {name: 'Sprint 1', tooltips: false, tasks: [
                                {id: 'Product list view', name: 'Product list view', color: '#F1C232', from: new Date(2016, 9, 21, 8, 0, 0), to: new Date(2016, 9, 25, 15, 0, 0),
                                    progress: 25, dependencies: [{to: 'Order basket'}, {from: 'Finalize concept'}]}
                            ]},
                            {name: 'Sprint 2', tasks: [
                                {id: 'Order basket', name: 'Order basket', color: '#F1C232', from: new Date(2016, 9, 28, 8, 0, 0), to: new Date(2016, 10, 1, 15, 0, 0),
                                    dependencies: {to: 'Checkout'}}
                            ]},
                            {name: 'Sprint 3', tasks: [
                                {id: 'Checkout', name: 'Checkout', color: '#F1C232', from: new Date(2016, 10, 4, 8, 0, 0), to: new Date(2016, 10, 8, 15, 0, 0),
                                    dependencies: {to: 'Login & Signup & Admin Views'}}
                            ]},
                            {name: 'Sprint 4', tasks: [
                                {id: 'Login & Signup & Admin Views', name: 'Login & Signup & Admin Views', color: '#F1C232', from: new Date(2016, 10, 11, 8, 0, 0), to: new Date(2016, 10, 15, 15, 0, 0),
                                    dependencies: [{to: 'HW'}, {to: 'SW / DNS/ Backups'}]}
                            ]},
                            {name: 'Hosting'},
                            {name: 'Setup', tasks: [
                                {id: 'HW', name: 'HW', color: '#F1C232', from: new Date(2016, 10, 18, 8, 0, 0), to: new Date(2016, 10, 18, 12, 0, 0)}
                            ]},
                            {name: 'Config', tasks: [
                                {id: 'SW / DNS/ Backups', name: 'SW / DNS/ Backups', color: '#F1C232', from: new Date(2016, 10, 18, 12, 0, 0), to: new Date(2016, 10, 21, 18, 0, 0)}
                            ]},
                            {name: 'Server', parent: 'Hosting', children: ['Setup', 'Config']},
                            {name: 'Deployment', parent: 'Hosting', tasks: [
                                {name: 'Depl. & Final testing', color: '#F1C232', from: new Date(2016, 10, 21, 8, 0, 0), to: new Date(2016, 10, 22, 12, 0, 0), 'classes': 'gantt-task-deployment'}
                            ]},
                            {name: 'Workshop', tasks: [
                                {name: 'On-side education', color: '#F1C232', from: new Date(2016, 10, 24, 9, 0, 0), to: new Date(2016, 10, 25, 15, 0, 0)}
                            ]},
                            {name: 'Content', tasks: [
                                {name: 'Supervise content creation', color: '#F1C232', from: new Date(2016, 10, 26, 9, 0, 0), to: new Date(2016, 10, 29, 16, 0, 0)}
                            ]},
                            {name: 'Documentation', tasks: [
                                {name: 'Technical/User documentation', color: '#F1C232', from: new Date(2016, 10, 26, 8, 0, 0), to: new Date(2016, 10, 28, 18, 0, 0)}
                            ]}
                       //close of return
                        ];
               //close of function         
                },
                getSampleTimespans: function() {
                    return [
                            {
                                from: new Date(2016, 9, 21, 8, 0, 0),
                                to: new Date(2016, 9, 25, 15, 0, 0),
                                name: 'Sprint 1 Timespan'
                                //priority: undefined,
                                //classes: [],
                                //data: undefined
                            }
                       //close of return     
                        ];
              //close of function          
                }]
          //close of main return      
            };
      //close of info service      
        })
    ;
    

    【讨论】:

    • 没问题!有空的时候请把问题标记为已回答:)
    • 我点击了您回复旁边的复选标记!再次感谢您!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 2020-01-03
    • 1970-01-01
    • 2015-11-30
    • 2015-04-05
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多