首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于ECMA6类的带有babel和ng注解/ngInject的控制器在ReferenceError中得到结果

基于ECMA6类的带有babel和ng注解/ngInject的控制器在ReferenceError中得到结果
EN

Stack Overflow用户
提问于 2016-06-06 21:54:34
回答 1查看 386关注 0票数 1

我有一个角1.4控制器,它的方法依赖于资源服务。我已经用ng-annotate注释了该类的构造函数,但是在方法中仍然找不到该服务的角诅咒:

代码语言:javascript
复制
var MyResourceFactory = require("myResource.service");

class MyController {
    // @ngInject
    constructor($location, $stateParams, $state, MyResource) {
        ... // some initialization code
    }

    myMethod(data) {
        var resource = new MyResource();
        resource.data = data;
        resource.save();
    }
}

module.exports = angular.module("MyModule", [])
    .factory('MyResource', MyResourceFactory)
    .controller('MyController', MyController)
    .config(routes);

但是,在myMethod (var resource = new MyResource())的第一行执行失败:

代码语言:javascript
复制
ReferenceError: MyResource is undefined
    at MyController.myMethod (myModule.module.js:214)
    ...

所使用的技术:

  • 角1.4
  • Webpack
  • 巴贝尔
  • ng-注释

如何将ngInject应用于ECMA6 6类方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-06 21:58:45

MyResource是构造函数方法的局部变量,它在外部不可用。在这种情况下,通常的做法是使其成为公共财产:

代码语言:javascript
复制
class MyController {
    // @ngInject
    constructor($location, $stateParams, $state, MyResource) {
        this.MyResource = MyResource;
        // ... some initialization code
    }

    myMethod(data) {
        var resource = new this.MyResource();
        resource.data = data;
        resource.save();
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37667452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档