2015-04-03 23 views
1

我刚刚面对我的新项目的一个小问题。基本上,有一个帖子页面和一些来自后端的评论作为页面的一部分。我想要做的就是为这些提供一些JavaScript逻辑。我提供的是:将jQuery与ES6的类一起使用

class Comment { 
    constructor(comment) { 
     console.log("Creating comment object..."); 
     $(comment).find(".vote").click(this.toggle_vote); 
     $(comment).find(".action.reply").click(this.toggle_reply); 
    } 

    toggle_vote() { 
     // Context here is `span.reply`, not Comment instance, 
     // but I want to access class members 
     if ($(this).is(".voted")) { 
      $(this).removeClass("voted"); 
      return; 
     } 

     $(this).addClass("voted"); 
     $(this).siblings().first().removeClass("voted"); 
    } 

    // ... 
} 

下面的问题在于jQuery的回调风格。当我将类成员传递给jQuery回调时,在调用时,jQuery嘲笑它的上下文,所以thisspan.reply,而不是Comment实例。关键是我想能够达到实际的评论实例。

声明:我根本不是前端人,所以我可能需要一些严格的解释来解决这个问题,谢谢!

+0

这有什么做用ES6类语法定义此对象的功能。 – Bergi 2015-04-03 11:30:42

+0

顺便说一句,你的'toggle_vote'函数似乎预计'this'是DOM元素? – Bergi 2015-04-03 11:32:17

+0

@Bergi好吧,它确实是atm,但我希望它有另一种表现。我在ES6中听说过“=>”语法,它会在这里工作吗? – 2015-04-03 11:40:23

回答