我对 ES6 Class 和 AngularJs 如何协同工作感到困惑。
注意:以下为说明混淆的伪代码,未经过测试
HTML
<div ng-repeat="x in list">
<div ng-click='clickMe(x)'>click</div>
</div>
JS
class TstController {
constructor() {
this.someVar = 'value';
}
clickMe() {
alert(this.someVar) //someVar is undefined
}
}
问题是在 clickMe 中,this == ChildScope
因此 someVar 是未定义的,
我的问题是如何将 TstController this
引用传递给 clickMe?
最佳答案
当您使用 ES6 class
时,我建议您使用 controllerAs
语法。最终它将通过 Controller 别名在 View 中公开类上下文(this
)。因此,无论您的 Controller 类中可用的是什么,都可以在其别名的帮助下查看,就像这里一样,我在 HTML 上使用了 tst.list
和 tst.clickMe
。
HTML
<body ng-controller="TstController as tst">
<div ng-repeat="x in tst.list">
<div ng-click='tst.clickMe(x)'>click</div>
</div>
</body>
关于javascript - 使用 AngularJs 和 ES6 类 : 'this' is not available in ng-click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45385903/