1

リソース サービスに依存するメソッドを持つ Angular 1.4 コントローラーがあります。そのクラスのコンストラクターに で注釈を付けましたng-annotateが、それでも Angular はそのサービスがメソッドで見つからないことを呪います:

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()実行が失敗します。

ReferenceError: MyResource is undefined
    at MyController.myMethod (myModule.module.js:214)
    ...

使用された技術:

  • 角度 1.4
  • ウェブパック
  • バベル
  • ng-注釈

ngInject を ECMA6 クラスのメソッドに適用するには?

4

1 に答える 1

2

MyResourceコンストラクター メソッドに対してローカルな変数であり、外部では使用できません。そのような場合の通常のアプローチは、それをパブリック プロパティにすることです。

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();
    }
}
于 2016-06-06T21:58:45.600 に答える