访问Vuejs组件内的元素

时间:2016-04-29 11:40:19

标签: javascript vue.js

我试图从我的Vue组件中访问dom中的元素,但我只是得到了' null'。如果我进入开发工具并尝试我可以访问它。我认为这是一个范围问题,但我无法找到答案。

<?php
if($this->session->is_user_login==TRUE)
{
   redirect('User/Emailverification');
}
?>

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:33)

@nils发布的answer适用于VueJS 1.x.新版本中删除了v-el指令。它被ref属性替换。

要在VueJS 2.x中实现相同的结果,您应该执行以下操作:

<template>
  <ul class="list-group" id="criteria" ref="criteria" v-for="item in criteria">
    <li class="list-group-item">{{ item.name }}</li>
  </ul>
</template>

<script>
  export default {
    data() {
      return {
        criteria: []
      }
    },
    mounted() {
      console.log(this.$refs.criteria);
    },
    methods: {},
  };
</script>

您可以在VueJS docs找到有关该更改的更多信息。

答案 1 :(得分:14)

VueJS 1.x

您可能更容易使用v-el指令,该指令允许您将组件中的元素映射到this.$els上的vm属性。

另外,AFAIK,您不应该将template属性与.vue文件中的模板相结合(假设您当前使用的是.vue个文件)。

<template>
    <ul class="list-group" id="criteria" v-el:criteria v-for="item in criteria">
        <li class="list-group-item">{{ item.name }}</li>
    </ul>
</template>

<script>
    export default {
        data() {
            return {
                criteria: []
            }
        },
        ready() {
            console.log(this.$els.criteria);
        },
        methods: {},
    };
</script>

答案 2 :(得分:1)

我遇到了同样的问题,我提到了互联网上所有可用的答案,但似乎没有任何效果。最后,这是对我有用的

STEP1)

在html元素中引用您的$ ref

 <p ref = "myref">Welcome to myApp</p>

STEP2)

在脚本中定义一个布尔变量

显示=假

STEP3)

在更新生命周期挂钩中,保留此代码

update(){

  if(this.shown){
       
     console.log(this.$refs.myref)
     your code
  
  }

}

STEP4)

在函数内部将布尔值更改为“ true”,如下面的代码

test(){

this.shown = false
....
some code
....

this.shown = true // this will trigger the code written in the update hook

}

这对我有用。希望这对其他人有帮助...编码愉快:)