Vue-실전 입문(4)
11451 단어 Vue 학습 기록
부모 구성 요소 하위 구성 요소 로 값 전달
props
속성 을 사용 하여 부모 구성 요소 가 전달 하 는 데 이 터 를 정의 해 야 합 니 다
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {
msg: ' '
},
components: {
son: {
template: '<h1> --- {{finfo}}</h1>',
props: ['finfo']
}
}
});
v-bind
또는 명령 을 간소화 하여 데 이 터 를 하위 구성 요소 에 전달 합 니 다.
하위 구성 요소 부모 구성 요소 에 값 전달
getMsg
은 부모 구성 요소 에서methods
정 의 된 방법 이름 입 니 다.func
는 하위 구성 요소 가 전달 하 는 방법 이름
this.$emit(' ', )
방식 을 통 해 부모 구성 요소 의 방법 을 호출 하고 데 이 터 를 부모 구성 요소 에 전달 합 니 다
<div>
<input type="button" value=" " @click="sendMsg" />
</div>
//
Vue.component('son', {
template: '#son', // Id
methods: {
sendMsg() { //
this.$emit('func', 'OK'); // ,
}
}
});
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {
getMsg(val){ // , this.$emit() ,
alert(val);
}
}
});
구성 요소 에서 data 와 props 의 차이
리 뷰 목록 사례
목표:부자 구성 요소 간 전송 값 연습
요소 와 구성 요 소 를 가 져 오 려 면
this.$refs
을 사용 하 십시오.
H1
Vue.component('my-com', {
template: '<h5> </h5>',
data() {
return {
name: ' '
}
}
});
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {
getElement() {
// this.$refs
console.log(this.$refs.myh1.innerText);
// this.$refs
console.log(this.$refs.mycom.name);
}
}
});
경로 가 무엇 입 니까?
vue 에서 vue-router 사용 하기
Vue.extend
생 성 구성 요소 // 4.1 Vue.extend
var login = Vue.extend({
template: ' '
});
// 4.2 Vue.extend
var register = Vue.extend({
template: ' '
});
// 5. router , routers
var router = new VueRouter({
routes: [
{ path: '/login', component: login },
{ path: '/register', component: register }
]
});
// 6. Vue , ViewModel
var vm = new Vue({
el: '#app',
router: router // router
});
tag 속성 을 사용 하여 router-link 렌 더 링 태그 형식 을 지정 합 니 다.
경로 재 설정
설정 경로 강조
경로 전환 효과 설정
경로 규칙 에서 매개 변 수 를 정의 합 니 다.
{ path: '/register/:id', component: register }
this.$route.params
를 통 해 경로 의 인 자 를 얻 을 수 있 습 니 다.var register = Vue.extend({
template: ' --- {{this.$route.params.id}}'
});
children
속성 을 사용 하여 루트 삽입 실현
Account
//
const account = Vue.extend({
template: `<div>
account
<router-link to="/account/login">login</router-link> |
<router-link to="/account/register">register</router-link>
<router-view></router-view>
</div>`
});
// login
const login = Vue.extend({
template: '<div> </div>'
});
// register
const register = Vue.extend({
template: '<div> </div>'
});
//
var router = new VueRouter({
routes: [
{ path: '/', redirect: '/account/login' }, // redirect
{
path: '/account',
component: account,
children: [ // children ,
{ path: 'login', component: login }, // , , /
{ path: 'register', component: register }
]
}
]
});
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {},
components: {
account
},
router: router
});
이름 보기 고전 레이아웃 구현
var header = Vue.component('header', {
template: '<div class="header">header</div>'
});
var sidebar = Vue.component('sidebar', {
template: '<div class="sidebar">sidebar</div>'
});
var mainbox = Vue.component('mainbox', {
template: '<div class="mainbox">mainbox</div>'
});
//
var router = new VueRouter({
routes: [
{
path: '/', components: {
default: header,
a: sidebar,
b: mainbox
}
}
]
});
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {},
router
});
watch
속성의 사용한 가지 문 제 를 고려 합 니 다.
와
두 텍스트 상자 의 내용 이 바 뀌 려 면 전체 이름 의 텍스트 상자 의 값 도 달라 집 니 다.(이전의 지식 으로 어떻게 실현 합 니까??)data
중 속성의 변화:
+
=
{{fullName}}
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {
firstName: 'jack',
lastName: 'chen',
fullName: 'jack - chen'
},
methods: {},
watch: {
'firstName': function (newVal, oldVal) { // ,
this.fullName = newVal + ' - ' + this.lastName;
},
'lastName': function (newVal, oldVal) {
this.fullName = this.firstName + ' - ' + newVal;
}
}
});
var login = Vue.extend({
template: '<h1> </h1>'
});
var register = Vue.extend({
template: '<h1> </h1>'
});
var router = new VueRouter({
routes: [
{ path: "/login", component: login },
{ path: "/register", component: register }
]
});
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {},
router: router,
watch: {
'$route': function (newVal, oldVal) {
if (newVal.path === '/login') {
console.log(' ');
}
}
}
});
computed
속성 을 계산 하 는 사용getter
의 계산 속성 만 있 습 니 다.
+
=
{{fullName}}
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {
firstName: 'jack',
lastName: 'chen'
},
methods: {},
computed: { // ; : data , , fullName
fullName() {
return this.firstName + ' - ' + this.lastName;
}
}
});
getter
와setter
의 계산 속성:
{{fullName}}
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: {
firstName: 'jack',
lastName: 'chen'
},
methods: {
changeName() {
this.fullName = 'TOM - chen2';
}
},
computed: {
fullName: {
get: function () {
return this.firstName + ' - ' + this.lastName;
},
set: function (newVal) {
var parts = newVal.split(' - ');
this.firstName = parts[0];
this.lastName = parts[1];
}
}
}
});
watch
,computed
와methods
의 대비computed
속성의 결 과 는 캐 시 됩 니 다.의존 하 는 응답 식 속성 변화 가 있어 야 다시 계산 할 수 있 습 니 다.주로 속성 으로 사용 하기;methods
방법 은 구체 적 인 조작 을 나타 내 고 주로 업무 논 리 를 쓴다.watch
한 대상,키 는 관찰 해 야 할 표현 식 이 고 값 은 대응 하 는 반전 함수 입 니 다.주로 특정한 데이터 의 변 화 를 감청 하여 구체 적 인 업무 논리 조작 을 한다.computed
와methods
의 결합 체 로 볼 수 있다.관련 파일