Vue에서 자리 표시자를 사용하는 방법

php中世界最好的语言
풀어 주다: 2018-04-12 14:58:28
원래의
12976명이 탐색했습니다.

이번에는 Vue에서 자리 표시자를 사용하는 방법과 Vue에서 자리 표시자를 사용할 때 주의 사항이 무엇인지 보여 드리겠습니다. 다음은 실제 사례입니다.

간단히 말하면 위치를 점유하는 데 도움이 되는 역할을 하며, 필요할 때 HTML을 직접 전달하면 표시됩니다.

어떤 사람들은 props가 상위 구성 요소에서 하위 구성 요소로 데이터를 전달할 수 있고, 슬롯이 상위 구성 요소에서 하위 구성 요소로 html을 전달할 수 있다고 말합니다. 그렇다면 그것을 달성하는 방법은 무엇입니까?

싱글 슬롯:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <script type="text/javascript" src="vue.min.js"></script>
  </head>
  <body>
    <p id="app">
      <h1>我是父组件的标题</h1>
      <my-component>
        <p>这是一些初始内容</p>
        <p>这是更多的初始内容</p>
      </my-component>
    </p>
    <script type="text/javascript">
      Vue.component('my-component', {
       // 有效,因为是在正确的作用域内
       template: '<p>\
              <h2>我是子组件的标题</h2>\
              <slot>只有在没有要分发的内容时才会显示。</slot>\
            </p>',
       data: function () {
        return {
         
        }
       }
      });
      new Vue({
        el:'#app',
        data:{
          msg:'你好啊'
        }
      })
    </script>
  </body>
</html>
로그인 후 복사

구성 요소의 템플릿에 슬롯 태그를 작성하고 상위 구성 요소가 하위 구성 요소를 호출할 때 html을 전달합니다.

이름이 지정된 슬롯:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <script type="text/javascript" src="vue.min.js"></script>
  </head>
  <body>
    <p id="app">
      <my-component>
         <h1 slot="header">这里可能是一个页面标题</h1>
         <p>主要内容的一个段落。</p>
         <p>另一个主要段落。</p>
         <p slot="footer">这里有一些联系信息</p>
      </my-component>
    </p>
    <script type="text/javascript">
      Vue.component('my-component', {
       // 有效,因为是在正确的作用域内
       template: '<p class="container">\
             <header>\
              <slot name="header"></slot>\
             </header>\
              <main>\
              <slot></slot>\
             </main>\
             <footer>\
              <slot name="footer"></slot>\
             </footer>\
            </p>',
       data: function () {
        return {
         
        }
       }
      });
      new Vue({
        el:'#app',
        data:{
          msg:'你好啊'
        }
      })
    </script>
  </body>
</html>
로그인 후 복사

명명된 슬롯은 이름에서 알 수 있듯이 여러 슬롯 태그가 있는 경우 고유한 이름을 지정해야 합니다. 상위 구성 요소를 호출할 때 이름이 지정되지 않은 슬롯 태그가 있는 경우 상위 구성 요소인 Slot="internal 해당 이름"이 필요합니다. 구성요소 전달된 기본 html 코드는 모두 이름 없는 슬롯 태그에 출력됩니다.

스코프 슬롯

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <script type="text/javascript" src="vue.min.js"></script>
  </head>
  <body>
    <p id="app">
       <!-- 在父级中,具有特殊特性 slot-scope 的 <template> 元素必须存在,表示它是作用域插槽的模板。slot-scope 的值将被用作一个临时变量名,此变量接收从子组件传递过来的 prop 对象: -->
       <child>
        <template scope="props">
         <span>hello from parent</span><br>
         <span>{{ props.text }}</span>
        </template>
      </child>
    </p>
    <script type="text/javascript">
      // 在子组件中,只需将数据传递到插槽,就像你将 prop 传递给组件一样:
      Vue.component('child',{
        template:'<ul>' +
              '<slot text="hello from child"></slot>' +
             '</ul>',
        data:function(){
         return {
         }
        },
      });
      new Vue({
        el:'#app',
        data:{
          msg:'你好啊'
        }
      })
    </script>
  </body>
</html>
로그인 후 복사

범위가 지정된 슬롯은 이미 렌더링된 요소 대신 재사용 가능한 템플릿(데이터가 전달될 수 있음)으로 사용되는 특수 유형의 슬롯입니다.

사실 이는 상위 구성 요소의 하위 구성 요소가 전달한 props 객체를 가져와 상위 구성 요소에 렌더링하는 것과 같습니다. ​ ​ ​

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! 추천 자료:

element-ui 테이블 내용을 변경하기 위한 테이블 조작 방법


TODOLIST 기능 구현 방법

위 내용은 Vue에서 자리 표시자를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿