控制台错误:[Vue警告]:属性或方法未在实例上定义,但在呈现期间引用

时间:2017-08-03 01:50:53

标签: laravel vuejs2 vue-component laravel-spark

首先,我是Laravel Spark并已成功集成到混音安装中,因此我的js已部署到app.js中

我为项目设置新组件时遇到错误;

刀片文件

@extends('spark::layouts.app')

@section('content')


    <div class="container">
        <!-- Application Dashboard -->
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">Sprints</div>

                    <div class="panel-body">

                        <os-sprints></os-sprints>



                          <input type="text" v-model="newSprint"> 
                          <button @click="addSprint">add</button>


                    </div>
                </div>
            </div>
        </div>
    </div>


    <template id="my-sprints">

      <ul class="list-group">

        <li class="list-group-item" v-for="sprint in sprintlist">
          <a :href="'/sprints/' + sprint.id">@{{ sprint.title }} @{{ sprint.id }} </a>
        </li>

      </ul>

    </template>



@endsection

和我的js

Vue.component('os-sprints', {

    template: '#my-sprints',

    data() {

        return {
          sprintlist: [],
          newSprint: ''
        };
    },


    created() {
        this.getSprints();
    },

    methods: {


        getSprints() {


          axios.get ('/api/team/sprints')
            .then(response => {
              this.sprintlist = response.data;
            });


        },


        addSprint() {

          alert("hit");


          // this.sprintlist.push(this.newSprintname);
          // this.newSprintname = '';


        },


    }


});

我在控制台中遇到的错误;

app.js:42229 [Vue warn]: Property or method "newSprint" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.

(found in <Root>)
warn @ app.js:42229
app.js:42229 [Vue warn]: Property or method "addSprint" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.

(found in <Root>)
warn @ app.js:42229
app.js:42229 [Vue warn]: Property or method "sprintlist" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.

(found in <Root>)
warn @ app.js:42229
app.js:42229 [Vue warn]: Invalid handler for event "click": got undefined

我的sprintlist数据很好,但即使没有文本字段和按钮我也会收到错误而我的按钮方法永远不会出现。

非常感谢任何反馈

克里斯!

4 个答案:

答案 0 :(得分:1)

此类警告通常是由未定义尚未的变量引起的。 (我知道,不是很有帮助)。我的意思是:

  1. 您将变量从一个组件A传递到另一个组件B
  2. 当变量仍在传递时(尚未到达所需的组件B),组件B已经安装
  3. 由于组件B已经安装,它正在尝试使用尚未到达的变量(ta da - &gt;警告)
  4. 然后达到一个变量,Vuejs做出反应并相应地更新了视图
  5. 可以通过向元素或包装器

    添加v-if来避免此警告

答案 1 :(得分:0)

这是因为您在父组件中引用了子组件的数据对象属性和方法。

移动
<input type="text" v-model="newSprint"> <button @click="addSprint">add</button>

进入您孩子组件的模板,你应该没事。

答案 2 :(得分:0)

好的我已经解决了,我曾尝试过MatWaligora之前的建议,但问题是我没有意识到模板中需要一个“父”。在我将其更改为下面后,我得到了功能。我仍然得到如上所述的Vue警告消息,但页面有效。

<template id="my-sprints">

  <div>

    <ul class="list-group">

      <li class="list-group-item" v-for="sprint in sprintlist">
        <a :href="'/sprints/' + sprint.id">@{{ sprint.title }} @{{ sprint.id }} </a>
      </li>

    </ul>


    <input type="text" id="sprinttext" v-model="newSprint"> 
    <button @click="addSprint">add</button>

  </div>


</template>

答案 3 :(得分:0)

对我来说,这是循环中一个额外的结束标记。

<div v-for="(item, index) in items" :key="index">

    <a :href="item.url">{{ item.name }} </a>

    </div> // <- the issue

</div>

如果其他答案对您没有帮助,请仔细检查所有标签。