VueJ는 프로포트를 데이터 속성 가치로 사용
저는 다음과 같은 시나리오에 매우 어려움을 겪고 있습니다.
일부 인덱스 페이지:
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<div id="app">
<ul>
<li>some existing option</li>
<example-component :foo="foo" :bar="bar"/>
</ul>
<a @click.prevent="showDetail(1, 'abc')" href="#" >Click ME!</a>
</div>
<script src="app.js"></script>
</body>
</html>
일부 단일 파일 구성 요소:
<template>
<li><a v-show="checkBool" data-toggle="tab" class="some-class" href="#container-div" data-tab-url="{{ this.foo }}">{{ this.bar }}</a></li>
</template>
<script>
export default {
props: ['foo', 'bar'],
computed: {
checkBool: function() {
return (this.foo != undefined && this.bar != undefined )
}
}
}
</script>
그리고 그app.js
다음과 같습니다.
import Vue from 'vue'
Vue.component('example-component', require('ExampleComponent.vue'));
const app = new Vue({
el: '#app',
props: [
'foo',
'bar'
],
data: {
foo: '',
bar: ''
},
methods: {
showDetail: function (foo, bar) {
this.foo = foo,
this.bar = bar
}
}
});
라라벨 설치로 웹팩과 함께 바벨을 사용하고 있습니다.
시나리오는 다음과 같습니다.
- 를 클릭하면
Click ME!
링크,foo
그리고.bar
갱신되어 컴포넌트에 전달됩니다(이 부분은 동작하고 있습니다). - 명명된 계산된 속성
checkBool
이 예가 참이 되기 때문에 새로운 리스트 아이템이 표시됩니다(이 부분은 동작하고 있습니다). - 새 목록 항목, 텍스트가 올바르게 설정된 링크가 있습니다.
bar
(이 부분도 동작하고 있습니다)
이 시점에서 컴포넌트와 부모 간의 값 설정 및 통신은 정상적으로 동작하고 있는 것을 알 수 있습니다.data-tab-url="{{ this.foo }}"
파트가 날 미치게 해
예상대로 콧수염 구문을 구문 분석하여 반환하는 대신data-tab-url="1"
따옴표 사이에 있는 모든 것의 구문 분석/에스케이프 값을 가져옵니다.
뭐랄까data-tab-url="%7B%7B+this.foo+%7D%7D"
.
부호화를 방지하려면 어떻게 해야 하나요?내가 읽은 바로는, 옛날엔...vuejs 1.*
. 3개의 브래킷 사용:{{{ this.foo }}}
하지만 지금은 더 이상 추천되지 않는다v-html
제 예로는 사용할 수 없습니다.
속성을 다음과 같이 바인딩합니다.:data-tab-url="foo"
.
이렇게 하면 영향을 받는 요소가data-tab-url
같은 값을 가진 속성foo
컴포넌트의 속성.
고맙다는 대답은 맞지만;
자세한 것은, 다음과 같습니다.
속성 바인딩에는 콧수염 구문을 사용할 수 없습니다.콧수염 {{}}: 돔 요소의 내용만 사용하십시오.
<div>{{someValue}}</div> (THIS IS WRONG)
"src" 또는 "data-tab-url"과 같은 템플릿을 포함한 속성을 바인딩하려면 "v-bind:attr" 또는 ":attr" 단축형을 사용합니다.
<div v-bind:src="someDataVariable"></div>
또는
<div v-bind:some-prop="someMethod()"></div>
구성 요소 또는 Vue 앱의 모든 멤버(데이터, 메서드, 계산 등)를 "이것" 없이 사용할 수 있습니다.
html 내의 컴포넌트 인스턴스 속성(prop, data, computed...)을 렌더링하려면 다음 작업을 수행해야 합니다.
다음을 사용하여 속성에 바인딩
v-bind:
또는 줄임말:
맘에 들다:foo="someFoo"
콧수염 구문 내에서 사용
{{someFoo}}
지시값으로 사용
v-show="isShown"
또는v-model="username"
명령어는 항상 앞에 붙습니다.v-
이벤트의 경우 다음과 같이 표시됩니다.v-on:eventName
또는@eventName
인라인 스테이트먼트를 실행할 수 있습니다.@click="count++"
또는 방법@click="increment"
을 알고increment
에 정의되어 있는 함수입니다.methods
옵션들
언급URL : https://stackoverflow.com/questions/43236848/vuejs-use-prop-as-data-attribute-value
'programing' 카테고리의 다른 글
C 포인터에서 어레이 크기를 가져오려면 어떻게 해야 합니까? (0) | 2022.08.30 |
---|---|
파일을 압축/해동하기 좋은 Java 라이브러리는 무엇입니까? (0) | 2022.08.30 |
Vue.js vue-router:페이지를 새로고침하지 않고 되돌아가려면 어떻게 해야 합니까? (0) | 2022.08.29 |
ISO C90은 C에서 선언과 코드가 혼재하는 것을 금지합니다. (0) | 2022.08.29 |
vue.js cli 명령어 "npm run serve" 작동 방식 (0) | 2022.08.29 |