2016-01-12 25 views
0

我创建了一个类来管理与我的应用程序的主要UI交互。在构造函数中,我想连接导航li的click事件。有人可以帮我弄清楚如何正确的范围这些对象?如何访问es6类构造函数中的click事件的方法?

class app { 
    constructor() { 

     $('.nav li').on("click", function() { 
      // I want to call changeView but pass in the data attribute from the li as the view param 
      // ex. changeView($(this).data('view')); 
     }); 

    } 

    changeView(view) { 
     console.log(view); 
    } 
} 
+0

现在ES2015! ; D –

+0

ES6中的问题与ES5中的问题没有什么不同。 – Bergi

+0

问题是一样的,但现在我们有箭头函数的解决方案是不同的。我们现在有一个优雅的解决方案来解决“这个”范围问题。 – dhysong

回答

3

使用箭头功能这将工作:

$('.nav li').on("click", e => { 
    this.changeView($(e.target).data('view')); 
}); 
+0

这正是我正在寻找的。谢谢! – dhysong

0

我相信如果你使用ES6箭头功能

class app { 
    constructor() { 
     $('.nav li').on("click",() => { 
      // I want to call changeView but pass in the data attribute from the li as the view param 
      this.changeView($(this).data('view')); 
     }); 
    } 

    changeView(view) { 
     console.log(view); 
    } 
} 
+0

这将不起作用,因为'changeView'没有在任何地方定义。 –

相关问题