【发布时间】:2019-06-30 11:02:19
【问题描述】:
我已经使用 webpack 和导入/导出语法将 AngularJS 应用程序转换为 es6。
除了 this 关键字之外,一切都很完美。
由于 webpack 在编译期间将我的所有代码包装到 iife 函数(模块)中,因此关键字 this 在以下函数中未定义:
.controller( …, function() {
...
this.myFunc = function() {
someFunction().then(function(data) {
this.someVar = data;
// this === window
});
});
});
在没有捆绑的普通角度应用程序中,这会得到window Object。
除了使用 webpack 之外,我不想做大的改变(我有很多代码地方都有)。有没有办法让this 指向 webpack 中的 window 对象?
【问题讨论】:
-
您可以使用箭头函数代替:
someFunction().then(data => { this.someVar = data; });。详情请见this。 -
不,我不想更改整个代码。只是在寻找将其设置为窗口的设置。
-
用变量污染全局命名空间是非常糟糕的做法。它会导致名称冲突,从而产生难以解决的错误。
标签: angularjs webpack ecmascript-6 babeljs