Vue $attrs 对象

实例

使用 $attrs 对象将 id fallsthrough 贯穿属性定向到 <p> 标记。

  1. <template>
  2. <h3>Tigers</h3>
  3. <img src="/img_tiger_small.jpg" alt="tiger">
  4. <p v-bind="$attrs">Tigers eat meat and not plants, so they are called carnivores.</p>
  5. </template>

定义与用法

$attrs 对象表示在 component 标记上设置的贯穿属性和事件监听。

当我们希望根元素继承在 component 标记上设置的贯穿属性和事件监听时,我们在该元素上使用 v-bind="$attrs"

$attrs 对象是只读的。

贯穿属性是在组件标记上设置的属性(而不是 prop),它贯穿到组件的根元素。如果组件中有多个根元素,我们使用 $attrs 对象来指定哪个元素应该继承贯穿属性。

更多实例

实例 1

使用 $attrs 对象来显示贯穿属性 idtitle 及其值。

  1. <template>
  2. <h3>Tigers</h3>
  3. <img src="/img_tiger_small.jpg" alt="tiger">
  4. <p v-bind="$attrs">Tigers eat meat and not plants, so they are called carnivores.</p>
  5. <hr>
  6. <p><strong>Below is the content of the $attrs object:</strong></p>
  7. <pre>{{ attrsObject }}</pre>
  8. </template>
  9. <script>
  10. export default {
  11. data() {
  12. return {
  13. attrsObject: null
  14. }
  15. },
  16. mounted() {
  17. console.log(this.$attrs);
  18. this.attrsObject = this.$attrs;
  19. }
  20. }
  21. </script>
  22. <style>
  23. #pink {
  24. background-color: pink;
  25. border-radius: 15px;
  26. padding: 10px;
  27. }
  28. img {
  29. width: 100%;
  30. border-radius: 15px;
  31. }
  32. </style>
实例 2

使用 <img> 标记上的 $attrs 对象从父组件接收事件监听。

  1. <template>
  2. <h3>Toggle Image Size</h3>
  3. <p>Click the image to toggle the image size.</p>
  4. <img v-bind="$attrs" src="/img_tiger_small.jpg" class="imgSmall">
  5. </template>
  6. <style>
  7. .imgSmall {
  8. width: 60%;
  9. }
  10. .imgLarge {
  11. width: 100%;
  12. }
  13. img {
  14. border-radius: 15px;
  15. cursor: pointer;
  16. }
  17. </style>

分类导航