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

Posted

技术标签:

【中文标题】Vue警告:实例上未定义属性“搜索”【英文标题】:Vue Warn: property "search" is not defined on instance 【发布时间】:2020-02-03 13:29:07 【问题描述】:

我正在使用 Django 服务器创建一个 Web 应用程序,该服务器使用来自 rest_framework 的 api 和 Vue 作为前端(特别是 Nuxtjs)。

尝试创建“搜索过滤栏”时出现此错误,我不知道为什么:

ERROR [Vue 警告]:属性或方法“搜索”未在实例上定义,但 在渲染期间引用。确保此属性是反应性的, 无论是在数据选项中,还是对于基于类的组件,通过 初始化属性。看: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

这是我的文件.vue

<template>
    <div>
      <v-text-field v-model="search" label="search conditions" outlined dense></v-text-field>
    </div>
    <div>
      <v-list v-for="condition in filteredConditions" :key="condition.id" >
          <v-list-item>
            <condition-card :onDelete="deleteCondition" :condition="condition"></condition-card>
          </v-list-item>
      </v-list>
    </div>
  </div>
</template>


<script>
  import ConditionCard from "~/components/ConditionCard.vue";
 export default 
  head() 
    return 
      title: "Conditions list",
      search: ""
    ;
  ,
  components: 
    ConditionCard
  ,
  async asyncData( $axios, params ) 
    try 
      let query = await $axios.$get(`/conditions/`);
      if (query.count > 0)
          return  conditions: query.results 
      
      return  conditions: [] ;
     catch (e) 
      return  conditions: [] ;
    
  ,
  data() 
    return 
      conditions: []
    ;
  ,
  ...
  ...
 computed: 
  filteredConditions: function()
    return this.conditions.filter((condition) => 
      return condition.name.toLowerCase().match(this.search.toLocaleLowerCase())
    );
  
 

;
</script>


<style scoped>
</style>

api是:

"count":15,
 "next":null,
 "previous":null,
 "results":["id":1,
             "name":"Blinded",
             "description":"A blinded creature can't see...",
             "source_page_number":290, 
             "id":2,
              "name":"Charmed",
              "description":"A charmed creature can't...",
              ...
              ...

【问题讨论】:

也许您的意思是在数据对象中进行搜索? 没错,在数据对象中移动搜索:'',程序可以工作。谢谢 【参考方案1】:

尝试将search 变量从head() 移动到data()

head() 
    return 
        title: "Conditions list"
    
,
...
data()
    return
        conditions: [],
        search : ''
    

【讨论】:

以上是关于Vue警告:实例上未定义属性“搜索”的主要内容,如果未能解决你的问题,请参考以下文章

实例上未定义属性或方法“键” - Vue/Laravel 应用程序

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

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

带有 v-for 的 Vue 内联模板 - 未定义

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

Vue 基于类的组件警告:属性未在实例上定义,但在渲染期间引用