Vue.js:实例上未定义属性或方法

Posted

技术标签:

【中文标题】Vue.js:实例上未定义属性或方法【英文标题】:Vue.js: Property or method is not defined on the instance 【发布时间】:2017-08-28 18:01:01 【问题描述】:

我有一个简单的 vue 组件:

Vue.component('repo-button', 
  props:["check_in_id", "repo_id"],
  template: '#repo-button',
  methods: 
    fetchRepo: function() 
      console.log("this is working")
    
  ,
  data: function() 
    var that = this;
    return 
  
);

var repositionings = new Vue(
    el: "#repo-vue"
)

我的看法是这样的:

<script type="text/x-template" id="repo-button">
    <div class='socialCircle-item success'>
    <i class='fa fa-comment' 
      :data-check_in='check_in_id' 
      :data-repo='repo_id'> 
    </i>
    </div>
</script>

<div id="repo-vue">
    <div is="repo-button" repo_id="8" check_in_id="30" @click="fetchRepo></div>
</div>

我看到了错误:

[Vue 警告]:属性或方法“fetchRepo”未在实例上定义,但在渲染期间被引用。确保在 data 选项中声明响应式数据属性。

似乎我已经注册了该方法,但是当我认为它应该是一个实例方法时,它正在根组件中查找该方法。 我应该如何包含fetchRepo 实例方法?

【问题讨论】:

【参考方案1】:

您已将fetchRepo 定义为组件的方法,但您试图从组件外部调用它。

在组件内移动点击处理程序。

<script type="text/x-template" id="repo-button">
    <div class='socialCircle-item success' @click="fetchRepo">
    <i class='fa fa-comment' 
      :data-check_in='check_in_id' 
      :data-repo='repo_id'> 
    </i>
    </div>
</script>

<div id="repo-vue">
    <div is="repo-button" repo_id="8" check_in_id="30"></div>
</div>

【讨论】:

以上是关于Vue.js:实例上未定义属性或方法的主要内容,如果未能解决你的问题,请参考以下文章

Vue CLI 错误:实例上未定义属性或方法“数据”

使用 vuex 和 vue 路由器的实例上未定义属性或方法“X”

Vue警告:实例上未定义属性“搜索”

Vue.js:属性或方法未在实例上定义,但在渲染期间引用

如何解决 Vue.js 中的“属性或方法未在实例上定义但在渲染期间引用..”?

[Vue 警告]:属性或方法未在实例上定义,但在渲染期间引用