programing

VueJ는 프로포트를 데이터 속성 가치로 사용

goodsources 2022. 8. 30. 22:31
반응형

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

반응형