web-dev-qa-db-ja.com

Vue.js-コンポーネントでの親データの使用

子コンポーネントPostで親のデータ変数(limitByNumber)にアクセスするにはどうすればよいですか?

プロップを使用しようとしましたが、機能しません。

親:

import Post from './components/Post.vue';

new Vue ({
    el: 'body',

    components: { Post },

    data: {
        limitByNumber: 4
    }
});

コンポーネントポスト:

<template>
            <div class="Post" v-for="post in list | limitBy limitByNumber">
                <!-- Blog Post -->
....
</div>
</template>


<!-- script -->    
<script>
        export default {
            props: ['list', 'limitByNumber'],


            created() {
                this.list = JSON.parse(this.list);
            }

        }
</script>
24
Michał Lipa

オプション1

つかいます this.$parent.limitByNumber子コンポーネントから。コンポーネントテンプレートは次のようになります

<template>
    <div class="Post" v-for="post in list | limitBy this.$parent.limitByNumber">                
    </div>
</template>

オプション2

小道具を使いたいなら、あなたが望むものを達成することもできます。このような。

<template>
   <post :limit="limitByNumber"></post>
</template>
<script>
export default {
    data () {
        return {
            limitByNumber: 4
        }
    }
}
</script>

子ポット

<template>
            <div class="Post" v-for="post in list | limitBy limit">
                <!-- Blog Post -->
....
</div>
</template>


<!-- script -->    
<script>
        export default {
            props: ['list', 'limit'],


            created() {
                this.list = JSON.parse(this.list);
            }

        }
</script>
50
Yerko Palma

特定の親にアクセスする場合は、次のようにすべてのコンポーネントに名前を付けることができます。

export default {
  name: 'LayoutDefault'

そして、いくつかの関数を追加します(すべてのコンポーネントで必要な場合は、vue.prototypeまたはMixinのようになります)。このような何かがそれを行う必要があります:

getParent(name){
      let p = this.$parent;
      while(typeof p !== 'undefined'){
        if(p.$options.name == name) {
          return p;
        }else {
          p = p.$parent;
        }
      }
      return false;
    }

使用方法は次のようになります。

this.getParent('LayoutDefault').myVariableOrMethod
1
Catch