AngularJS 1.x中的ES6类依赖注入

时间:2017-06-12 23:36:59

标签: javascript angularjs dependency-injection es6-class

我正在使用ES6类编写AngularJS(v1)应用程序,我需要在我班级的所有范围内注入$http服务。

我找到了两种方法:

// 1) Use 'this'
// =====================
class HelloWorld {
    constructor($http) {
        this.$http = $http;
    }

    getTest() {
        this.$http.get('http://api.myjson.com')
                  .then(res => console.log(res))
    }
}

// 2) Use WeakMap
// =====================
const HTTP = new WeakMap();

class HelloWorld {
    constructor($http) {
        HTTP.set(this, $http);
    }

    getTest() {
        HTTP.get(this)
            .get('http://api.myjson.com')
            .then(res => console.log(res))
    }
}

我真的没有看到在这里使用WeakMap有什么好处(事实上,我不太清楚WeakMap是如何工作的,也许这就是重点^^)

另外,你知道其他更优雅的解决方案吗? (我可能会使用ES2016装饰器/注释)

感谢。

0 个答案:

没有答案