【问题标题】:How do I return Vue resource without putting to data?如何在不放入数据的情况下返回 Vue 资源?
【发布时间】:2016-02-07 10:26:12
【问题描述】:

我想直接返回结果(通常我们会尝试放入数据并访问该数据,是的。但现在我想要的是直接的)。就像我们调用 hello() 函数时一样,我想返回 result 变量。 我尝试如下,但它不会返回是的。我该如何尝试?

    hello: function() {
        var result = "";

        this.$http.get(window.location.href).success(function(data) {
            result = data;
        }).error(function (data, status, request) {

        });            

        return result;
    }

【问题讨论】:

    标签: javascript javascript-framework vue.js


    【解决方案1】:

    看起来它没有返回数据,因为请求是异步的。您的方法设置请求,然后在请求有机会将任何数据分配给 result 变量之前立即同步返回。

    您可以尝试稍微更改您的代码:

        hello: function() {
            var result = {};
    
            this.$http.get(window.location.href).success(function(data) {
                result.data = data;
                result.ready = true;
            }).error(function (data, status, request) {
    
            });            
    
            return result;
        }
    

    这应该使您能够访问其他地方的数据(如result.data),但只有在异步查询成功后result.ready 标志会告诉您这种情况是否以及何时发生。

    在我看来,使用 Promise 肯定会更好,例如使用jQuery Deferreds and promisesES6 promises 以及polyfill

    【讨论】:

    • 您最好简单地使用返回的资源,然后在完成后执行您需要的操作。等待结果被填充将是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多