2015-05-29 43 views
7

我正在學習Vue.JS並遇到了一些問題。我希望用戶能夠點擊<a href="#"></a>標記e.preventDefault(),並且還可以獲取與該鏈接關聯的對象。這裏是我的代碼(注意,我@之前的{{因爲我用刀片):VueJS - 防止鏈接點擊的默認值,但也捕獲對象

<a href="#" 
        class="list-group-item" 
        v-repeat="responder: responders" 
        v-on="click: showResponder(responder)"> 
        <div class="media"> 
         <div class="media-left"> 
          <img src="" v-attr="src: responder.avatar" alt="" class="media-object"/> 
         </div> 
         <div class="media-body"> 
          <h4 class="media-heading">@{{ responder.first_name }} @{{ responder.last_name }}</h4> 
          <p> 
           <strong><i class="fa fa-phone"></i> Phone:</strong> @{{ responder.phone }} 
          </p> 
         </div> 
        </div> 
        </a> 

和JavaScript:

var vm = new Vue({ 
      el: "#responderContainer", 
      data: { 
       activeResponder: null, 
       responders: [] 
      }, 
      methods: { 
       showResponder: function(responder) 
       { 
        // Here is where I wish to prevent the 
        // link from actually firing its default action 
        responder.preventDefault(); 
        this.activeResponder = responder; 
       } 
      } 
     }); 

以此爲據可以作爲抓住responder對象,但打響鏈接 - 我需要能夠e.preventDefault()並獲得對象。

謝謝!

回答

20

documentation顯示你可以通過$事件獲得事件對象

http://vuejs.org/guide/events.html

<button v-on="click: submit('hello!', $event)">Submit</button> 

/* ... */ 
{ 
    methods: { 
    submit: function (msg, e) { 
     e.stopPropagation() 
    } 
    } 
} 
/* ... */ 

所以,你要在V-on屬性是

v-on="click: showResponder(responder,$event)" 

功能定義爲

showResponder: function(responder,e) 
+1

謝謝!實際上,我正在關注這個laracasts.com教程,要麼我們沒有得到那麼多,要麼我錯過了它;)會深入挖掘文檔。 Vue真棒! – NightMICU

11

或者,在Vue公司1.x中,你也可以使用event modifier.prevent

HTML:

<a v-on:click.prevent="showResponder(responder)">...</a> 

你可以停止傳播,以及:

<a v-on:click.prevent.stop="showResponder(responder)">...</a> 

JS:

... 
      showResponder: function(responder) 
      { 
       // No need to prevent any more 
       this.activeResponder = responder; 
      } 
... 
+1

它實際上應該是'v-on:click.prevent' –

+1

謝謝,你當然是對的:) – nils

相關問題