뷰 컴포넌트 간의 패스 값 (통신)

아버지 사이의 의사 소통의 세 가지 구성 요소는 구성 요소 형제 사이의 통신에 아버지에게 아들에 아들이있다

부모 구성 요소는 서브 어셈블리 값을 전달

횡단 부모 요소 내에 중첩, 송신에 부모 식별자 조립체, 수신 내부 소품 조립체는 조립체의 형태로 사용될 수있다 {{}} 템플릿이다. 부모 요소 식별자 조립체로 전달되는 경우 포함 - 수용을 수신 할 때 조립체 고비 사용.

  • 현지 통화 상위 구성 요소 서브 어셈블리,
  • 사용자 정의 속성 추가, 속성 이름은 정의 (단, ID, 클래스 등을 정의되지 않음)
  • 속성 값은 전달해야 값이 (이 속성을 바인딩 경우이 값은 변수가 될 수있는 변수가 사용됩니다)
  • 여기서 서브 어셈블리의 정의
  • 이 배열의, 옵션 소품 추가
  • 배열 요소가 제공되는 상위 요소 속성 이름이고
  • 부모 요소에서 정의 된 다음에, 내부에 서브 어셈블리를 직접 사용할 수있는 속성 이름, 속성 값 수득 통해 전달

2 부모 구성 요소는 서브 어셈블리 값을 전달

  • 우리는 종종 물이 ​​유동 음과 함께 아래쪽으로 흐름 말했듯 부모 컴포넌트 서브 어셈블리는 약간의 문제를 전달하는 아이의 부모에 대해 값 (전달하기 위해, 적어도 내부에 접지 우물에 도달하는 경우에 우리 튜브를 가지고, 상기 튜브 조립체) 값에 의해 전달되는 부모 구성 요소의 서브 채널 인
  • 하위 구성 요소, 좋은 이벤트 식별의 정의는 ---로 부모 (좋은 정의 채널에 해당) (주의하지 낙타라는 이름에)
  • 그런 다음이. $ 방출 ( '에 대한 부모의 가치, 패스)
  • 지역 전화 부모 컴포넌트 서브 어셈블리,이 이벤트의 이행 이벤트 식별에 부모 -----
  • <V-아들 @에 부모 = "getMoney"> </ V-아들>
  • 부모 구성 요소를 구현 getMoney이 값은 상위 서브 어셈블리 컴포넌트 얻어진 값으로 전달

<템플릿 언급 된 ID = "아들"이상>
<DIV>
어렸을
<버튼 @ 클릭 = "giveMoney ( 10000)"> 부모가 </ 버튼>을 돈 싸움에
</ DIV>
</ 템플릿>
<템플릿 언급 된 ID = "테스트"이상>
<DIV>
<클릭 @ 버튼 = 'COUNT ++'> 클릭 {{수}} </ 버튼 >,
아이들이 {{돈}} 달러 재생이 달
<V-아들 @에 부모 = "getMoney"> <을 / V-아들>
</ DIV>
</ 템플릿>

아들 = {const를
틀 : "#son",
데이터 () {
반환 {
}
}
방법 : {
giveMoney (발) {
// 당신은 카드, 부모에 카드를 수행 돈을 재생
이 $의 발광 (를 제공합니다. ) 발 '-에 부모
}
}
}
. // (1), 첫 글자 정의 구성 요소 어셈블리 대문자로해야 ----
CONST = {테스트
템플릿 : "#test",
데이터 () {
반환 {
돈 : 0
}
}
방법 {
getMoney (발) {
this.money 발 =
}
},
구성 요소 : {
'V-아들'아들
}
}

3 아들 사이의 비 - 패스 값

비 아버지와 나는 개인적으로는의 전통적인 가치의 가장 번잡 한 구성 요소 느낌 아들 사이의 값을 통과, 당신은 또한 간단 우리가 그 (것)들의 사이에서, 파티 책임 캔 트리거를 모니터링하기위한 책임이있는 당사자를 정의로는 한, 또한 간단 어렵다 어려운 그녀는 말한다 이 명령에 의해 보유하면서 상호 이동 값은 새로운 VUE, 공항 관제탑의 상당 중앙 이벤트 버스에 기초한다.

$on 负责监听事件
$emit 负责触发事件 并传递参数
    如果有AB两个组件,如果A要给B传值,B就必须先监听A,使用起来比较麻烦。
事件的中央总线 (飞机塔台,邮差的故事)
在src下创建bus.js
var bus = new Vue() //中央事件总线
export default bus ;
假如有AB两个组件
在AB组件中引入bus中央事件总线

구성 요소 구성 요소 B에게 메시지 보내기

methods:{
    sendData(val){
   bus.$emit("A-B",val)
    }
  }
mounted(){
    bus.$on("B-A",function(val){
        console.log(val)
})
}
在B组件内接收
mounted(){
    bus.$on("A-B",function(val){
        console.log(val)
          bus.$emit("B-A",val)
})
}

AB를 상호 작용하는 두 개의 구성 요소가있는 경우, 여섯 개 이벤트가있는 경우 세 가지 이벤트가 할 것, 네 개의 이벤트가있을 것입니다
가장 그들 사이의 값보다는 번잡하지만이 그들 사이를 이벤트 이름을하지 않을 경우 정의하는 것으로는 이벤트의 이름을 정의 된 규칙의 완전한 세트는 코드의 결합은 유지 보수도 낮고, 증가 개발의 효율성을 감소, 프로젝트 개발 사이클을 증가 할 이유가 없습니다.
그것은 권장하지 않습니다

可以在main.js中
vue.prototype.$bus = new Vue()在原型上扩展一个$bus
不用单创建bus文件
通过this.$bus.$on()进行使用

추천

출처www.cnblogs.com/jlfw/p/11875633.html