2017-12-08 4 views
0

の外Vue.js @clickディレクティブをレンダリング:私はそうのように設定したリンクを持っているhtmlタグ

<a href="#" @click="modal=true">Open modal</a> 

そして、ここではデータです:

export default { 
    data() { 
     return { 
      modal: false 
     } 
    } 
} 

は、クリックを誘発するが回避策です実際に@clickを直接タグに配置する必要はありませんか?期待される結果は同じですが、@clickはvueインスタンスのどこかで定義されます。

+2

バニライベントリスナーを使用できますか? – SourceOverflow

+1

バニライベントバインディングがどのようにデータモデル変数にアクセスするのかを学ぶことに興味があります。 – Taplar

+0

あなたはアンカーの属性で 'ref ='を使うことを許可されていますか?はいの場合は、下の私の答えを見つけてください。 – 82Tuskers

答えて

1

あなたはこれを試みることができる:

export default { 
    data() { 
    return { 
     modal: false 
    } 
    }, 
    mounted() { 
    var self = this; 
    this.$el.querySelector('a').addEventListener('click', function() { 
     Vue.set(self, 'modal', true); 
    }); 
    } 
} 
+0

ありがとうBen私はメソッドを作成して、同様のアプローチを使用し、それから、イベントリスナーをmounted()に入れて起動します。 – slipkid

+0

私の答えはこれに非常に似ているので、投稿しませんでした。しかし、私は 'これをしたいと思います。$ refs。 。$ el.addEventList ..() 'と' self.modal = true'だけです。 'Vue.set(...)'は 'modal'が既に' data'の属性であるため除外できます。 – 82Tuskers

関連する問題