我怎么能从这里返回数据。$ http.get在vue js中

时间:2015-08-19 01:10:06

标签: ajax laravel-5 vue.js

我在使用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
}

任何想法的人?

3 个答案:

答案 0 :(得分:4)

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

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
}

答案 1 :(得分:3)

我认为你误解了$http.get的异步性质。您拥有return counties的回报不会影响displayCounty的返回值。 displayCounty立即返回nullreturn counties稍后无效。

在这种情况下使用的一个好策略是在视图模型上设置success回调集counties。然后,您可以在counties上设置观察程序,并在数据发生变化时处理数据。

答案 2 :(得分:0)

Ready已被Vounted.js 2中的Mounted取代。

你应该用这个:

ready: mounted() {
    this.getCounties;
},