Vue公司。如何在创建的元素中获取“key”属性的值

时间:2017-08-24 02:30:22

标签: vue.js vuejs2 vue-component

我尝试创建组件并获取其在axios中使用的密钥。 元素已创建,但我无法获得密钥。这是未定义的

<div class="container" id="root">
    <paddock is="paddock-item" v-for="paddock in paddocks" :key="paddock.key" class="paddock">
    </paddock>
</div>
<script>
var pItem = {
    props: ['key'],
    template: '<div :test="key"></div>',
    created: function() {
        console.log(key);
    }
    };
new Vue({
    el: '#root',
    components: {
        'paddock-item': pItem
    },
    data: {
        paddocks: [
            {key: 1},
            {key: 2},
            {key: 3},
            {key: 4}
        ]
    }
})
</script>

我尝试了一些变种,但没有结果 - @key是空的。

5 个答案:

答案 0 :(得分:22)

您不需要使用额外的属性。您可以通过

获取密钥
this.$vnode.key

答案 1 :(得分:3)

这个答案回答了如何密钥传递给子组件的问题。如果您只想从子组件中获取当前键,请使用最高投票答案。

<小时/> key是Vue中的special attribute。您必须将您的财产称为其他内容。

以下是使用pkey的替代方法。

&#13;
&#13;
console.clear()
var pItem = {
  props: ['pkey'],
  template: '<div :test="pkey"></div>',
  created: function() {
    console.log(this.pkey);
  }
};
new Vue({
  el: '#root',
  components: {
    'paddock-item': pItem
  },
  data: {
    paddocks: [{
        key: 1
      },
      {
        key: 2
      },
      {
        key: 3
      },
      {
        key: 4
      }
    ]
  }
})
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.js"></script>
<div class="container" id="root">
  <paddock-item v-for="paddock in paddocks" :pkey="paddock.key" :key="paddock.key" class="paddock">
  </paddock-item>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用chrome的Vue扩展,您可以在元素树中看到按键:

Vue keys

以下是扩展名的链接: https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd

答案 3 :(得分:0)

在 Vue 3 中,您可以通过以下方式获取密钥:

import { getCurrentInstance} from "vue";

getCurrentInstance().vnode.key

答案 4 :(得分:0)

使用 this.$options._parentVnode.key 对我有用:

created() {
   console.log(this.$options._parentVnode.key)
}