2017-05-20 5 views
4

vue.js에서 CreateElement/render를 사용하여 생성 된 하위를 통해 부모로부터 소품을 전달하고 보면서 문제가 발생했습니다.Vue.js에서 렌더를 통해 소품을 전달하고 시청하려고합니다.

여기

Vue.component('my-drawing', MyDrawing) 

new Vue({ 
    el: '#drawing', 
    mounted() { 
    Bus.$on('emitColorSelection', (emitString) => { 
     console.log("inside socket.js/my-drawing and emitString is ", emitString); 
     this.useColor = emitString; 
     console.log('inside socket.js/my-drawing and this.useColor after set is ', this.useColor); 
    }) 

    }, 
    data() { 
    return { 
     channel2: null, 
     canvases: [], 
     useColor: 'rgba(255, 0, 0, 1)' 
    } 
    }, 
    render(createElement) { 
    return createElement(MyDrawing, { 
     props: { 
     useThisColor: this.useColor 
     } 
    }) 
    } 
}); 

그래서 당신은 여기에서 볼 수 있습니다 내 부모 구성 요소입니다 좀 버스 개의 발광의 가치를 가지고 있다는 것입니다 그리고 나는 useColor에 있음을 전달합니다. 이 값을 내 렌더링 함수에 useThisColor로 전달하고 싶습니다.

다음은 자녀입니다.

<template> 
    //my template stuff 
</template> 

<script> 
//stuff 
    watch: { 
    useThisColor (n, o) { 
     console.log("useThisColor watch, ", n, o) // n is the new value, o is the old value. 
    } 
    } 
//stuff continues 

따라서이 감시 태그는 출력되지 않습니다. 나는 또한 효과를 템플릿뿐만 아니라, Updated: 태그에 출력하려고하는 소품을 퍼팅 시도했다. 나 또한 따옴표를 사용하여 부모에게 소품을 설정하려고 시도했습니다. 지금까지 아무 것도 작동하지 않았고 약간 혼란 스럽습니다. 누구든지 아이디어가 있다면 알려주세요.

+0

MyDrawing의 소품은 무엇입니까? – Bert

+0

최상위 수준의 myDrawing 상위 자체에는 소품이 없습니다. 그림과 같이 버스가 방출되고 표시되지 않지만 Phoenix 백엔드에서 캔버스 배열로 변경됩니다 (이 문제에 영향을 미치지 않아도 됨). 편집 : 현재 아이 내 그림은 캔버스를 수정하고 피닉스를 사용하여 채널을 통해 방출하므로 소품이 없습니다. 이제 문제는 createElement를 통해 소품을 전달하고 보는 것입니다. –

+1

MyDrawing 구성 요소에는 'useThisColor'라는 소품이 있어야합니다. – Bert

답변

2

여기서 MyDrawing 구성 요소에 useThisColor 속성을 정의하지 않았다는 것이 문제입니다.

여기는 example입니다.