我正在使用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装饰器/注释)
感谢。