Vue(둘)

38869 단어
Vue 구문 (2)
1. 슬롯 배포
1. slot 슬롯
1) 서브어셈블리 슬롯
서브어셈블리 템플릿에서 태그를 사용하여 슬롯 위치를 정의합니다. 태그에 컨텐트를 입력할 수 있으며 부모 어셈블리가 컨텐트를 가져오지 않을 때 이 컨텐트를 표시할 수 있습니다.
<template id="child-template"> 
    <div> 
        <div>     </div> 
        <div>{{msg}}</div> 
        <!--    slot        --> 
        <slot>      ,          </slot> 
    </div> 
</template> 
Vue.component('child', { 
    template:'#child-template', 
    props:['msg'] 
}); 

2) 상위 구성 요소 배포
   <child><solt><div id="app"> 
    <!--      --> 
    <child :msg="msgText"> 
        <!--     ,      --> 
        <h4>     </h4> 
        <h5>    ....</h5> 
    </child> 
</div> 
 
<template id="child-template"> 
    <div> 
        <div>     </div> 
        <div>{{msg}}</div> 
        <!--    slot        --> 
        <slot>      ,          </slot> 
    </div> 
</template>
<script> 
    Vue.component('child', { 
        template:'#child-template', 
        props:['msg'] 
    }); 
    var app = new Vue({ 
        el:'#app', 
        data:{ 
            msgText:'     ' 
        } 
    }); 
</script>

2. 구명 슬롯
    slot,          。
	               ,    name        , :,        < slot='header'>      。


	
	<html>
	<head>
		<meta charset="UTF-8">
		<title>slot  </title>
		<script type="text/javascript" src="../js/vue.js" ></script>
	</head>

	<body>
  <div id="app">
		<!--<my-hello></my-hello>-->
		<my-hello>
			<h3 slot="header">  </h3>
			<p slot="footer">  p  </p>
		</my-hello>
	</div>
	
	<!--  template  -->
	<template id="tpl1">
		<div>
			<slot name="header"></slot>
			<div>--------------------</div>
			<!---->
			<slot name="footer"></slot>
		</div>
	</template>
	
</body>

<script type="text/javascript">
	
	//      
	Vue.component("my-hello",{
		template:"#tpl1",
	});
	var app = new Vue({
		el:"#app"
		
	});
</script>
</html>
	

3、slot-scope
역할 영역 슬롯 slot-scope, 부모 구성 요소는 슬롯을 통해 부모 구성 요소의 내용을 혼합하고, 서브 구성 요소도 slot 역할 영역을 통해 슬롯 slot 내부에 데이터를 전송할 수 있으며, 사용 방식: 부모 구성 요소는 인용을 통해 참조할 수 있습니다.


 <body>
    <div id="app">
			<!--<my-hello></my-hello>-->
			<my-hello>
				<template slot-scope="props">
					<h3>  ----{{props.msg}}----{{props.txt}}</h3>
				</template>
			</my-hello>
		</div>
		
		<!--  template  -->
		<template id="tpl1">
			<div>
				<div>--------------------</div>
				<!---->
				<slot msg="   " txt="Hello"></slot>
			</div>
		</template>
		
	</body>
	
	<script type="text/javascript">
		
		//      
		Vue.component("my-hello",{
			template:"#tpl1",
		});
		
		
		var app = new Vue({
			el:"#app"
			
		});
		
	</script>
	<body>
	<div id="app">
		<!--<my-hello></my-hello>-->
		<my-hello>
			<h3 slot-scope="{msg,txt}">  ----{{msg}}----{{txt}}</h3>
		</my-hello>
	</div>
	
	<!--  template  -->
	<template id="tpl1">
		<div>
			<div>--------------------</div>
			<!---->
			<slot msg="   " txt="Hello"></slot>
		</div>
	</template>
	
</body>

<script type="text/javascript">
	
	//      
	Vue.component("my-hello",{
		template:"#tpl1",
	});	
var app = new Vue({
		el:"#app"
		
	});
	
</script>


4. 동적 구성 요소
탭의 is 속성을 사용하여 여러 개의 구성 요소를 마운트 지점에 동적으로 연결합니다. is 연결 값을 바꾸어 구성 요소를 전환합니다.
<body>
<div id="app">
			<!--3-->
			/ <a href='#' @click.prevent="page='index'">  </a>
			/ <a href='#' @click.prevent="page='news'">  </a>
			/ <a href='#' @click.prevent="page='login'">  </a>
			
			<!--2、  component  -->
			<component :is="page"> </component>
		</div>
	</body>
	
	<script type="text/javascript">
		// 1、    
		Vue.component('index', {
		    template:'
'
}); Vue.component('news', { template:'
'
}); Vue.component('login', { template:'
'
}); new Vue({ el:"#app", data:{ page:'index' } }); </script>

keep-alive
전환된 구성 요소를 메모리에 저장하면 상태를 유지하거나 다시 렌더링하지 않습니다.이를 위해keep-alive 명령을 추가할 수 있습니다.
<div id="app">
			<!--3-->
			/ <a href='#' @click.prevent="page='index'">  </a>
			/ <a href='#' @click.prevent="page='news'">  </a>
			/ <a href='#' @click.prevent="page='login'">  </a>
			
			<!--2、  component  -->
			<keep-alive>
		        <component :is="page"></component>
		    </keep-alive>
		</div>
	</body>
	
	<script type="text/javascript">
		// 1、    
		Vue.component('index', {
		    template:'
'
, // , ( ) mounted: function () { console.log(' ... '); } }); Vue.component('news', { template:'
'
, mounted: function () { console.log(' ... '); } }); Vue.component('login', { template:'
'
, mounted: function () { console.log(' ... '); } }); new Vue({ el:"#app", data:{ page:'index' } }); </script>

refs 속성
ref를 사용하여 모든 구성 요소에 고정된 이름을 붙여 줍니다. 부모 구성 요소에서 $refs를 사용하여 하위 구성 요소에 접근할 수 있습니다.

좋은 웹페이지 즐겨찾기