0

내 ActionCable 채널의 CoffeeScript 부분에서 여러 개의 버튼을 만들고 이벤트 리스너를 검색하는 데 문제가 있습니다. 따옴표 작은 따옴표 리터럴로 바꾸지 않고 Coffeescript의 앞뒤에 작은 따옴표를 덧붙입니다.

오른쪽에 대한

  • first_name + ' McFly'에 대한

    • "#{first_name} McFly" : 나는 단일 인용 텍스트 (리터럴 문자열) 및 이중 인용 텍스트 (문자열)에 대한 서로 다른 연결 방법을 알고 있어요?

      그래서 나는이 작동하지 않는 이유를 조금 혼란 스러워요 : 나는 너무 오래 이미이 부분에 붙어 있었어요

      answer_text = "answer_button_" 
          counter = 0 
          for i in data.answers 
           answerHtml.push "<button type='button' id=answer_text+counter >#{i.title}</button>" 
           $('#'+answer_text+counter).on 'click', (e) -> App.answer_data.send_data() 
           counter = counter+1 
      

      , 그래서 사람이 할 수 있다면 정말 행복 할 것 나에게 올바른 방향으로 조금 움직여 라.

  • 답변

    0

    좋아, 문제는 온 클릭 핸들러의 첫 번째 부분에서 발생 했으므로 중괄호의 표현식을 작은 따옴표로 묶어야했다. 예를 들면 :

    $('#answer_button_0').on 'click', (e) -> App.answer_data.send_data() 
    

    그러나 내가 $.parseHTML("\'")를 사용하여 작은 따옴표를 탈출했다 리터럴 문자열로를 돌리지 않고 문자열 의 앞면과 뒷면 위에 작은 따옴표를 연결할 수 있습니다.

    그래서 무슨 결국 나를 위해 일한이 : 는 [편집 :이 솔루션이 아니었다 밝혀, 아래 참조]

    $($.parseHTML("\'" + '#' + answer_text + counter + "\'")).on 'click', (e) -> App.answer_data.send_data() 
    

    편집 : 는 이벤트 리스너를 해결하기 위해 관리하고, 버튼 (감사 @mu!) :

    answer_text = "answer_button_" 
    counter = 0 
    for answer in data.answers 
        answerHtml.push "<button type='button' id=#{answer_text+counter} >#{answer.title}</button>" 
        counter = counter+1 
    

    내가 (나중에 코드에서 별도의 루프를했습니다 이벤트 리스너를 해결하려면 버튼 인 Appen 된 후에 DED) 페이지로 :

    counter = 0 
    for id in data.answers.map (answer) -> answer.id 
        console.log "[AC] answer id: #{i.id}" #This prints 4 different ids, like it should! 
        $('#answer_button_'+counter).on 'click', (e) -> App.answer_data.send_data(id) 
        counter = counter+1 
    

    불행하게도, 지금은 버튼과 이벤트 리스너가 나는 문제를 가지고 작동하는지 그 ID 나는 새에서 만든 이벤트 리스너에 통과 특성 루프 (send_data(id)에서)는 항상 동일합니다./

    편집 2 : 나는 왜 ... 아무 생각이 없다 @mu가 제안한 것처럼 나는이 키워드 않는 추가를 지금은 작동합니다

    counter = 0 
    for id in data.answers.map (answer) -> answer.id 
        do (id) -> 
        $('#answer_button_'+counter).on 'click', (e) -> App.answer_data.send_data(id) 
        counter = counter+1 
    

    감사합니다! :)

    +0

    정말인가요? '$ ('#'+ answer_text + counter)'는'$ ("## {answer_text} # {counter}")'와 같아야합니다. '

    +0

    당신은 @mu 맞습니다. '$ ('# answer_button _ '+ counter).'클릭 ', (e) -> App.answer_data.send_data()'가 올바른 연결 방법이었습니다.그리고 당신은 다른 두 부분에 대해서도 옳았습니다 : 나는 'answerHtml.push'로 변경했습니다. " 버튼이 실제로 페이지에 추가 된 후 이벤트 리스너를 설정하는 두 번째 루프. 불행히도 저는 지금 다른 문제에 직면하고 있습니다. 저는 제 질문을 업데이트했습니다. – megahra

    +0

    당신은'do' 루프가 필요합니다. [이 섹션의 맨 아래에있는 [this answer] (https://stackoverflow.com/a/18047974/479863) (http://coffeescript.org/# 루프) 및 [검색 결과] (https://stackoverflow.com/search?q=user%3A479863+%5Bcoffeescript%5D+CoffeeScript+provides+the). –