【发布时间】:2015-12-24 20:21:32
【问题描述】:
我在我的新 Angular 项目中改用 ES6 (Babel)。 ES6 类不能有变量。我现在如何设置我的 $scope 变量??
假设我有一个简单的控制器:
class MainController {
constructor ($timeout, events) {
'ngInject';
this.textMaker = "Hello!" //Option #1
} // constructor
textMaker(){ //Option #2
return "Hello!";
}
}
export default MainController;
我的 html 看起来像(例如,控制器是在构建过程中自动注入的):
<h1> {{textMaker}}</h1>
选项#1 和选项#2 似乎都不起作用。我得到一个空白标题。这么简单的事情..我做错了什么?
【问题讨论】:
-
this仅在您为控制器定义controllerAs或as时才有效,另一方面,您可以尝试注入$scope并执行类似this.$scope.whatever的操作(我'我不确定) -
我在我的 ui-router 文件中定义了一个
controllerAs。它的价值应该是多少?它是如何影响这一点的? -
好像有误会。您使用 ES6 的事实并没有改变任何东西。使用
$scope的方式与在 ES5 中使用它的方式相同。 ES6“类”只是语法糖(还),而不是一个新特性。 -
不,你不能在 es6 中使用 $scope,因为如果你注入并开始使用 $scope,gulp 会抛出“参数冲突”错误。这是因为,在 ES6 中,'this' 充当 $scope,但仅当您在该控制器的路由状态定义中具有控制器的 alise 时。
标签: javascript angularjs ecmascript-6 ecmascript-harmony angular-controller