我有一个角1.4控制器,它的方法依赖于资源服务。我已经用ng-annotate注释了该类的构造函数,但是在方法中仍然找不到该服务的角诅咒:
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)
...所使用的技术:
如何将ngInject应用于ECMA6 6类方法?
发布于 2016-06-06 21:58:45
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();
}
}https://stackoverflow.com/questions/37667452
复制相似问题