1

현재 맴버 된 요소에만 부트 스트랩 팝업을 트리거하려고합니다. 불행히도 그것은 페이지에있는 모든 것을 유발합니다.모든 요소에 대해 백본 이벤트 수신기가 트리거됩니다.

this.$('.rating').popover('show'); 

그들 모두를 명중 : 나는 당신이보기의는 el 그래서 이것은 내부의 여러 .rating 요소가 같은데요

Site.Views.Stories ||= {} 

class Site.Views.Stories.IndexView extends Backbone.View 
    template: JST["backbone/templates/stories/index"] 

    initialize:() -> 
    @options.stories.bind('reset', @addAll) 

    addAll:() => 
    @options.stories.each(@addOne) 

    addOne: (story) => 
    view = new Site.Views.Stories.StoryView({model : story}) 
    @$("#columns").append(view.render().el) 

    render: => 
    $(@el).html(@template(stories: @options.stories.toJSON())); 
    @addAll() 
    return this 

    events: => 
    "mouseover .rating" : this.showhover 

    showhover: => 
    this.$('.rating').popover('show'); 

답변

2

: 아래 (커피 스크립트에서) 백본 스크립트입니다. 그냥 이벤트 핸들러의 이벤트 인수에서 .rating 특정을 잡아서 후 그렇게 말 이벤트를 수신하는 .rating을 원하는 경우 :

showhover: (ev) => 
    $(ev.currentTarget).popover('show') 

몇 가지 다른 일을 내가 여기 있어요 동안 :

  1. 백본은 더 이상 자동으로 당신이 initialize에서 손으로해야 할 다음 @options를 원하는 경우, @options 설정하지 :

    당신은 당신의 events하는 기능을 사용할 필요가 없습니다
    initialize: (@options) -> ... 
    
  2. 이 괜찮을 것 : 당신은 =>에 모든 방법을 필요가 없습니다

    events: 
        "mouseover .rating" : 'showhover' 
    
  3. . 나는 당신이 어떤 것 (함수 대신에 events 객체를 사용한다고 가정)을 위해 그것을 할 필요가 있다고 생각하지 않는다. 그러나 을 사용하거나 bind에 세 번째 인자를 제공함으로써 그 하나를 해결할 수있다.

관련 문제