我如何在 vue js 中从 this.$http.get 返回数据

Posted

技术标签:

【中文标题】我如何在 vue js 中从 this.$http.get 返回数据【英文标题】:how can i return data from this.$http.get in vue js 【发布时间】:2015-11-12 03:09:05 【问题描述】:

您好,我在 laravel 5 中使用 vue js 在我的 ajax 调用中返回数据时遇到问题。我有一个状态数组并在循环内调用 ajax 函数。现在的问题是 ajax 似乎无法返回值。这是我的代码:

ready: function() 

    var dData = ;

    for (var i=0; i<this.pState.selectedState.length; i++)
        dData = this.displayCounty(this.pState.selectedState[i])
    
    console.log(dData);

,
methods:

    displayCounty: function(val)
        var nData = ;

        // ajax get County list
        this.$http.get('/api/counties/' + val )
            .success(function(counties)
               return counties;
            )
            .error(function()

            ) //ajaxcall

    // displaCounty

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您只想将返回的结果分配给变量,请尝试以下操作:

ready: function() 
    this.getCounties;
,

data: 
    counties: []
,

methods:

    getCounties: function(val)

        // ajax get County list
        this.$http.get('/api/counties/' + val )
            .success(function(counties)
               this.counties = counties;
            )
            .error(function()

            ); //ajaxcall

     // displayCounty

【讨论】:

我所做的是将其分配给一个新变量,例如“var self = this”,然后在 ajax 中我只需将国家分配给 self.countries,我现在就可以获取值了。 如果我不想将该结果分配给国家数据,该怎么办?【参考方案2】:

我认为您误解了$http.get 的异步性质。 return counties 的返回值不会影响 displayCounty 的返回值。 displayCounty 立即返回 null,而 return counties 稍后什么也不做。

在这种情况下使用的一个好策略是在 View Model 上设置 success 回调设置 counties。然后您可以在counties 上设置一个观察者,并在数据发生变化时对其进行处理。

【讨论】:

【参考方案3】:

Ready 已被 Vue.js 2 中的 Mounted 取代

你应该使用这个:

ready: mounted() 
    this.getCounties;
,

【讨论】:

以上是关于我如何在 vue js 中从 this.$http.get 返回数据的主要内容,如果未能解决你的问题,请参考以下文章

在Vue.js中从父组件执行子方法

如何在 Vue.js 中从 JSON 数据创建选择元素?

如何在vue js中从组件渲染组件

如何在 Vue+webpack+vue-loader 项目中从不同的 js 文件中导入函数

如何在 nativescript vue 中从主页导航到登录页面?

如何删除 Vue.js 中的元素?