2016-12-17 5 views
0

v-showを拡張するためのカスタムディレクティブを作成しました.v-showblockは実際のスタイルに追加しています。動作しないカスタムディレクティブを使用してアニメ化

遷移/アニメーションはv-showで動作しますが、アニメーションなしで動作するv-showblockでは動作しません。

私はこの問題に焦点を当てるために私のコードを簡素化:VueJS遷移が特定の状況でのみ<transition>内の要素に取り組むため

<style> 
.fade-enter-active, .fade-leave-active { 
    transition: opacity .5s 
} 
.fade-enter, .fade-leave-active { 
    opacity: 0 
} 
</style> 
<body> 

<div id="demo"> 
    <button @click="toggle">Toggle</button> 
    <transition name="fade"> 
    <p v-showblock="show">hello</p> 
    </transition> 
</div> 



Vue.directive('showblock', 
     function (el, binding) { 
      if (binding.value === true) { 
       el.style.display = 'block'; 
      } 
      else { 
       el.style.display = 'none'; 
      } 
     } 
    ); 
    new Vue({ 
     el: '#demo', 
     data: { 
     show: true 
     }, 
     methods: { 
     toggle: function() { 
      this.show =!this.show; 
     } 
     } 
    }); 
+1

あなたはそれを作成できますか? – Saurabh

+1

https://jsfiddle.net/w8ssj8np/1/; v-showblockでv-showblockを実行すると、遷移(フェード効果)が機能しません。 – user3541631

+1

これはどのようにディレクティブを使用して実現できるのかよく分かりませんが、ここでは移行の使用を見ています(https:// github。 com/vuejs/vue/blob/v2.1.3/src /プラットフォーム/ web /ランタイム/ディレクティブ/ show.js) – Saurabh

答えて

1

これが動作していません。

  1. v-if状態が
  2. を変更
  3. v-show状態変更
  4. コンポーネント

あなたのケースでは、サポートされていないカスタムディレクティブv-showblockを使用して非表示にしようとしています。代わりにv-ifまたはv-showを使用した場合、移行が機能します。

続きを読むVueJS docsを参照してください。

関連する問題