2017-12-21 21 views
0

私は新しいVueJSの学生です。私はディレクティブを実行しようとしていましたが、理由が分からないので停止しました。私は間違って何をしているのですか?私はちょうどel要素を取得したいです。VueJS 2ディレクティブの挿入イベント

ここにJSFiddleまたは以下のコードがあります。

HTML

<div class="container" id="vue-app"> 
    <ul> 
     <li v-test v-for="item in itens"> 
     {{item.name}} 
     </li> 
    </ul> 
    <span id="directiveLog"></span> 
</div> 

JS

Vue.directive('test', { 
    inserted: function (el) { 
     document.querySelector('#directiveLog').innerHTML = el; 
    } 
}) 

new Vue({ 
    el: '#vue-app', 

    data: { 
    itens:[ 
    {name: "hello"}, 
    {name: "fun"}, 
    {name: "world"} 
    ] 
    } 

}); 
+1

あなたのコンソールログを確認してください:あなたはそれをやってからあなたを防ぐURLからホットリンクしているのでVueJSがロードされていません。 [cdnjs](https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js)のようなCDNからロードしてみてください。あなたの指示はうまくいくはずです:https:/ /jsfiddle.net/teddyrised/7r9x60ps/1/。 HTMLノードはオブジェクトであるため、ノード(オブジェクト)にinnerHTML(文字列を受け入れる)を設定することはできません。 'document.querySelector( '#directiveLog')。innerHTML = el.innerHTML' – Terry

+1

Vueが読み込まれます。そうでなければ、何もレンダリングされませんでした。 2度読み込まれたのは問題です。もう1つはVue 1です。 – Bert

答えて

1

挿入された機能にパラメータ 'EL'(EL){...} - それはV-テストが挿入され、あなたの要素であります。

Vue.directive('test', { 
 
     inserted: function (el) { 
 
      document.querySelector('#directiveLog').innerHTML = el.innerHTML; 
 
    } 
 
}) 
 

 
new Vue({ 
 
    el: '#vue-app', 
 

 
    data: { 
 
    itens:[ 
 
    {name: "hello"}, 
 
    {name: "fun"}, 
 
    {name: "world"} 
 
    ] 
 
    } 
 

 
});
<script src="https://cdn.jsdelivr.net/npm/vue"></script> 
 
    <div v-test class="container" id="vue-app"> 
 
       <ul> 
 
        <li v-for="item in itens"> 
 
        {{item.name}} 
 
        </li> 
 
       </ul> 
 
       <span id="directiveLog"></span> 
 
      </div>

+0

ああ、神様、基本的なJavaScriptの間違い...ありがとう! :) – Johnson

+0

@Johnsonよろしくお願いします! – Sergey

関連する問題