2016-07-21 8 views
0

最近、私は奇妙な問題に遭遇しました。私はいくつかのjqueryコードをvueコンポーネントのメソッドオプションで記述しました。 jquery hide()関数はすべて正常です。jquery hide()ramdonly

example1のようなコードを書くと、非常に短時間で ".edit-box"が消えてから表示されます(点滅します)。私は例2のように私のコードを記述する場合、それは私のコードをexcuteする時間について何かあれば

//my html 
<p class="move-up-btn" v-on:mousedown.stop="moveUpLib">...</p> 

//example 1 
Vue.component('...',{ 
    template:'...', 
    methods:{ 
     moveUpLib:function(){ 
      (this).$parent.moveUpLib(); 
      $('.edit-box').hide(); 
     }, 
     } 
    }) 

は、「.editボックス」disppears完全

//example 2  
    Vue.component('auxiliary',{ 
    template:'#auxiliary', 
    methods:{ 
     moveUpLib:function(){ 
      alert('hi'); 
      (this).$parent.moveUpLib(); 
      $('.edit-box').hide(); 
     }, 
    } 
    }) 

は、だから私は疑問に思います。そして私はこのように私のコードを変更しました。私は

  • 1理由例1つのdoes'tを知りたい

    //example3 
        Vue.component('...',{ 
        template:'...', 
        methods:{ 
         moveUpLib:function(){ 
          (this).$parent.moveUpLib(); 
          setTimeout(function(){ $('.edit-box').hide(); }, 1000); 
         }, 
         } 
        }) 
    

    :私は「サーバが404の状態で応答(見つかりません)リソースのロードに失敗しました」され得ることをしかし、すべての仕事

  • 2私は のVueのメソッドオプション内のsetTimeoutを使用できない理由
  • 3 I「の.editボックス」を取得警告なし を消えることができますどのよう

誰でも助けることができれば幸いです!

+0

だけで好奇心のために、なぜあなたは '括弧内のthis'を囲むされていますか?一般に、これらの例には多くの緩やかな終わりがあります。 'moveUpLib'は' $ parent'要素で何をしますか? '.edit-box'とは何ですか?どのように404エラー(見つからない)が表示されますか? AJAX経由で何かを取得していますか? –

+0

1「this」が囲まれているかどうかに違いはありません。 IDEがエラーメッセージを表示しないようにしたいからです。 2これらの例は、私の実際のコードのほんの一部ですが、長すぎると思います。 3 '$ parent'の' moveUpLib'は、現在のライブラリと以前のライブラリ(データベースの更新など)の位置を交換する実際の仕事をします。 4各ライブラリコンポーネントには、 'edit-box'という子コンポーネントがあります。それぞれの 'edit-box'コンポーネントには' edit-box'というクラスがあります。 –

+0

5 Vueのメソッドの中に 'setTimeout'関数を置くと、404エラーが発生します。 AJAXはまったくありません。私も好奇心が強いです:) –

答えて

1

なぜこれにjqueryを使いたいのですか? Vueはこれを扱う独自の(そしてより良い:-P)方​​法を持っています。

Vueの哲学(角度とreacのものなど)はDOMに直接触れることはまれではなく、libararyはDOMをコンポーネントの状態/データに合わせて変更します。

HTML:

<textarea v-show="showEditBox" class="edit-box"><textarea> 

JS

data: function() { 
    return { showEditBox: true } 
}, 
methods: { 
    moveUpLib: function() { 
    //other stuff... 
    this.showEditBox = false // <= hides the textarea 
    } 
} 
+0

ありがとうございました。しかし、私の場合、すでにたくさんのやりとりがあります。さらに、「moveUpLib」関数をトリガーするコンポーネントは、「editBox」コンポーネントの兄弟です。ですから、jQueryを使って "editBox"を隠す方がはるかに簡単です。私が正しく覚えていれば、vuejsのドキュメントでは、vuejsはjqueryとうまく動作すると言います。最後に、私は本当にjqueyのhide()が時々だけ動作するのか理解できません。それはとても混乱しています..... –

+0

オクラホマ、あなたの状況。私は 'の問題が何であるか分かりません。しかし、hide()はそうです。 –