javascript - 使用 AngularJs 和 ES6 类 : 'this' is not available in ng-click

标签 javascript angularjs es6-class

我对 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.listtst.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>

Demo Plunker

关于javascript - 使用 AngularJs 和 ES6 类 : 'this' is not available in ng-click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45385903/

相关文章:

javascript - Angular JS 在 Django 应用程序中已安装但未加载

angularjs - 在不同的元素上使用相同的 Controller 来引用同一个对象

css - ionic2 html页面背景色全屏

javascript - 如何让这个按钮来重置这个 react 组件中的计时器?

向迭代器添加 "return"方法的 JavaScript 无法正确关闭迭代器

javascript - 为什么 React Native 在 JavaScriptCore 中时要重新实现 XMLHttpRequest?

php - AJAX + PHP : Session timeout

javascript - 如何在同一个下拉菜单中调用不同的div

javascript - 如何使用 JS 中的模板文字打印用户的输入?它给出了错误

reactjs - 为 React 组件中未使用的类方法设置 eslint 规则