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가로드됩니다. 그렇지 않으면 아무것도 렌더링되지 않습니다. 그것은 두 번로드 된 문제이고 두 번째는 Vue 1입니다. – Bert

답변

1

매개 변수 삽입 기능의 '엘'(엘) {...} -이 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

오, 하나님, 기본 자바 스크립트 실수 ... 감사합니다 사람! :) – Johnson

+0

@ 존슨 환영합니다! – Sergey