【问题标题】:Undefined service provider angular 1.6 and es6未定义的服务提供者 Angular 1.6 和 es6
【发布时间】:2017-07-16 15:10:23
【问题描述】:

我正在尝试创建 rest api,以便使用 Angular 1.6 和 es6 获取发布/获取一些数据。 并在组件中获得未定义的 SylabusService

TypeError: 无法读取未定义的属性“保存”

。服务文件

'use strict';
import angular from 'angular';

export function SylabusService($resource) {
  'ngInject';
  return $resource('/api/sylabuss/:id', {
      id: '@_id'
    })
  };

。组件文件

你可以在第 9 行看到,我正在尝试记录它,但返回 undefined

'use strict';
const angular = require('angular');

const uiRouter = require('angular-ui-router');

import routes from './sylabus.routes';
import SylabusService from './sylabus.service';

export class SylabusComponent {
  /*@ngInject*/
  constructor($scope, SylabusService) {
    console.log(SylabusService); //undefined
      $scope.createSylabus = function(){
        SylabusService.save($scope.newSylaBus.title, function(sylabus){
          console.log(sylabus);
        })
    }
  }
}
SylabusComponent.$inject=['$scope'];
export default angular.module('aSpaApp.sylabus', [uiRouter])
  .config(routes)
  .component('sylabus', {
    template: require('./sylabus.html'),
    controller: SylabusComponent,
    controllerAs: 'sylabusCtrl'
  })
  .factory('service',SylabusService)
  .name;

我做错了什么?

【问题讨论】:

    标签: angularjs ecmascript-6 angular-services es6-module-loader angular-components


    【解决方案1】:

    您的SylabusService 实际上称为service,因此请将其添加到您注入依赖项的部分:

    SylabusComponent.$inject=['$scope', 'service'];
    

    或者(也许更好)将服务命名为 SylabusService 并注入:

    SylabusComponent.$inject=['$scope', 'SylabusService'];
    export default angular.module('aSpaApp.sylabus', [uiRouter])
      .config(routes)
      .component('sylabus', {
        template: require('./sylabus.html'),
        controller: SylabusComponent,
        controllerAs: 'sylabusCtrl'
      })
      .factory('SylabusService',SylabusService) // <-- Name the service here
      .name;
    

    【讨论】:

    • 如果我将服务添加到注入中,那么我会收到“错误:[$injector:unpr] 未知提供者:SylabusServiceProvider
    • 幸运的第三次更新了答案,您已将服务命名为 service,因此注入或重命名它。
    • 谢谢,现在它可以工作了,但只有当服务功能与组件在同一个文件中时,我才会通过 Matthew 之前提供给我的链接了解如何在应用程序中注册服务。再次感谢
    • 没问题,很高兴它有帮助。祝第二部分好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多