te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - How to get refs array in vue.js? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to get refs array in vue.js? - Stack Overflow

programmeradmin2浏览0评论

In vue, I create tabs (4 of them), with 4 tab content containers. I want to set a ref on them, and then get it as an array of 4. This is the code

?&editable=true&editors=101

<div id="app">
  <v-app id="inspire">
    <v-tabs
      fixed-tabs
      background-color="indigo"
      dark
    >
      <v-tab>
        Option
      </v-tab>
      <v-tab>
        Another Selection
      </v-tab>
      <v-tab>
        Items
      </v-tab>
      <v-tab>
        Another Screen
      </v-tab>

        <v-tab-item v-for="i in 4">
            <div ref="childTabsContent">A</div>
        </v-tab-item>

    </v-tabs>
  </v-app>
</div>

js

new Vue({
  el: '#app',
  vuetify: new Vuetify(),
  mounted : function() {
    var vm = this;
    setInterval(function() {
          var tabs = vm.$refs;
          console.log(tabs);
    }, 1000);

  }
})

It logs the array

{childTabsContent: Array(1)}

when I expect

{childTabsContent: Array(4)}

Anyone know what's wrong?

Note: this example uses vuetify 2.0, but that part is irrelevant.

Thanks

In vue, I create tabs (4 of them), with 4 tab content containers. I want to set a ref on them, and then get it as an array of 4. This is the code

https://codepen.io/anon/pen/WVoGYM?&editable=true&editors=101

<div id="app">
  <v-app id="inspire">
    <v-tabs
      fixed-tabs
      background-color="indigo"
      dark
    >
      <v-tab>
        Option
      </v-tab>
      <v-tab>
        Another Selection
      </v-tab>
      <v-tab>
        Items
      </v-tab>
      <v-tab>
        Another Screen
      </v-tab>

        <v-tab-item v-for="i in 4">
            <div ref="childTabsContent">A</div>
        </v-tab-item>

    </v-tabs>
  </v-app>
</div>

js

new Vue({
  el: '#app',
  vuetify: new Vuetify(),
  mounted : function() {
    var vm = this;
    setInterval(function() {
          var tabs = vm.$refs;
          console.log(tabs);
    }, 1000);

  }
})

It logs the array

{childTabsContent: Array(1)}

when I expect

{childTabsContent: Array(4)}

Anyone know what's wrong?

Note: this example uses vuetify 2.0, but that part is irrelevant.

Thanks

Share Improve this question asked Jul 27, 2019 at 1:04 omegaomega 43.9k89 gold badges285 silver badges521 bronze badges 2
  • if they should be unique, why have it return an array of length 1, and not just the element itself? – omega Commented Jul 27, 2019 at 1:16
  • The issue is probably caused by how the <v-tabs> ponent renders its items; you are rendering 4 <v-tab-item> ponents but maybe the <v-tabs> ponent only renders the first one? – Decade Moon Commented Jul 27, 2019 at 1:17
Add a ment  | 

2 Answers 2

Reset to default 8

Only the active tab item's content is rendered. So the ref's on the other divs don't exist.

You should add your refs to the looping ponent.

<v-tab-item v-for="i in 4" :key="i" :ref="'childTabsContent' + i">
  <div v-text="'A' + i"></div>
</v-tab-item>

You'll now get an array of all the ponents.

You can also access these ponents as such:

Object.keys(this.$refs).forEach(el => {
  console.log( this.$refs[el][0] )
})

Only one 'ref' will appear because the others have not been rendered yet.

You can see more details here. $refs return undefined

As soon as you click the other tabs, the other 'refs' will be loaded in the object showing an array of 4 elements.

发布评论

评论列表(0)

  1. 暂无评论