2016-01-22 25 views
5

Vue.jsで入力要素のフォーカスを設定しようとしています。私はオンラインで助けを見つけましたが、説明のどれも私のために働いていませんでした。vue.jsの入力要素のフォーカスを設定する

は、ここに私のコードです:私はフォーカスをターゲットとしたオンライン見つけることができる何のためthis.$$.nameInput.focus();this.$els.nameInput.focus();を試してみました

<template> 
    <form method="post" action="" v-on:submit.prevent="search"> 
     <input type="text" placeholder="Person name" required v-model="name" v-el="nameInput" /> 
     <input type="text" placeholder="Company" required v-model="company" v-el="domainInput" /> 
     <input type="submit" value="Search" class="btn show-m" /> 
    </form> 
</template> 

<script> 
export default { 
    data() { 
     return { 
      contacts: [], 
      name: null, 
      company: null 
     } 
    }, 
    ready: { 
     // I tried the following : 
     this.$$.nameInput.focus(); 
     this.$els.nameInput.focus(); 
     // None of them worked ! 
    } 
    methods: { 
     search: function (event) { 
      // ... 

      // I also would like to give the focus here, once the form has been submitted. 
      // And here also, this.$$ and this.$els doesn't work 
     }, 
    } 
} 
</script> 

が、this.$$は未定義であり、this.$elsは空です。それは助けることができるならば、私はvue.js v1.0.15に

を使用してい

はあなたの助けをいただき、ありがとうございます。

答えて

3

いくつか問題があります。まず

V-EL Sは次のように定義されています。

<input v-el:input-element/> 

は、それはコード内のキャメルケースに変数を有効にします。あなたは、この奇妙な機能hereの詳細を読むことができます。

それ以外の場合は、this.$els.inputElementから変数にアクセスできるはずです。あなたが気にするのは、その要素を定義しているコンポーネント(またはそこに定義している場合はメインアプリケーション自体)にのみ表示されます。

第二に、私のマシンでは、自動フォーカスがFirefox(43.0.4)で動作していないようです。すべてがChromeでうまく動作し、期待どおりのフォーカスが得られます。

+0

、なぜこのよう:

Vue.directive('focus', { inserted: function (el) { el.focus() } }) 

次に、あなたが入力し、他の要素にv-focus属性を使用することができますか? (もし何か考えがあるなら)。 'v-el =" XXX "'はもっと論理的なものですか? –

+0

しかしこれはうまくいくので、私の受け入れられた答えがあります:)ありがとう –

+2

[This](https://github.com/vuejs/vue/issues/1292)は、現在の機能に関する基本的な思考プロセスです。 – Andrius

18

vue 2.xでは、ディレクティブで解決できます。 functionningの

奇妙だ
<input v-focus> 
+0

この回答は解決策としてマークする必要があります。これは、firefoxとchromeでperferctly動作します。 – dahrens

+0

それは働いた。 {__ エル.__ VUE() 焦点を当てる。}関数(エル)私はVUE要素-UIを使用しているため '' ' を多分それだ。しかし、私は ' ''挿入を使用する必要がありました。 –

関連する問題