javascript - Vue.js 如何在实例上定义方法

标签 javascript laravel vue.js vuejs2 laravel-5.4

嗨,我正在尝试将 json 数据添加到元素中。我通过 jsonp 调用外部 API 获取数据。但不知何故,vue 无法识别该变量的存在。由于该应用程序位于 laravel 中,我在 laracasts 论坛上读到,数据和方法属性应该 be defined in components ,但这并不能解决我的问题。我正在使用 vue.js2 和 laravel 5.4 我收到以下错误:

app.js:[Vue warn]:属性或方法“名称”未在实例上定义,但在渲染期间引用。确保在数据选项中声明响应式(Reactive)数据属性。

这是我的代码:

app.js

Vue.component('search', 
 { 
    template: '<div class="panel-heading" ></div>',
      data: function(){
        return {
           names: []
        }
    },

    methods:  {
         getData: function(){
             var self = this;
              // GET request
           this.$http.jsonp(url,
           {
            jsonpCallback: "JSON_CALLBACK"
            })
           .then(
               response=>{
                  this.names = response.body
               })}      

      }
 });

const app = new Vue({
    el: '#search'
});

Blade 模板

<div id='search'>
<search v-for='name in names'>
@{{name.label.eng}}
</search>
</div>

最佳答案

您正在尝试引用父模板中的 names 属性,但 names 是组件的属性。

但是,这里不需要组件。显然,您可以使用组件,但在这种情况下,您需要将引用names的模板向下移动到组件中。相反,我在这里删除该组件。

const app = new Vue({
  el: '#search',
  data:{
    names: []
  },
  methods:  {
    getData(){
      this.$http.jsonp(url, {jsonpCallback: "JSON_CALLBACK"})
       .then(response => this.names = response.body)
    }           
  },
  mounted(){
    this.getData()
  }
});

还有你的模板

<div id='search'>
  <div v-for='name in names' class="panel-heading">
    @{{name.label.eng}}
  </div>
</div>

关于javascript - Vue.js 如何在实例上定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440724/

相关文章:

javascript - 如何在单元测试期间验证已调用某个javascript函数

javascript - Kendo 窗口固定位置

javascript - RXJS - flatMap 冗余使用?

javascript - Vue.js - 在处理程序中访问事件

javascript - 如何检测网页是否在Phone的嵌入式浏览器中运行?

php - 在 Laravel 5.3 上使用 Datatables 服务器端后处理数据

php - 如何避免在客户端和服务器之间重复业务逻辑?

php - laravel spatie日志包设置哪些字段被修改

vuejs2 - VueJS : Using component inside another component

javascript - Vue For 循环无法正常工作