在控制器的功能中访问vue实例

时间:2015-06-25 11:38:38

标签: vue.js

控制器:

Vue.directive('fetch',function(value,scope){
value["url"].isLiteral = true;
qwest.post(value["url"]).then(
    function(response){
        console.log(response);
        if (response["CODE"] == 1){
            console.log(response["RESULT"]);
            this.result = response["RESULT"];
            this.error = "";
        }else{
            this.result = "";
            this.error = response["ERROR"];
        }
    }
).catch(
        function(e,response){
            this.error = response["ERROR"];
        }
    );
})

型号:

var test = new Vue({
el : "#test",
data : {
    code : "",
    result : "",
    error : ""
    }
})

所以,如果我使用this.result,它就超出了范围,但是如果我将它引用为test.result,那么它就会被访问并且值会被更新,所以通用的访问方式是什么vue实例?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案, 可以使用指令对象中可用的属性,它是this.vm,它实际上是指令的vue模型,因此可以使用this.vm并在调用函数之前将其分配给某个变量,从而使用名称this.vm被指定为单例函数调用的变量。

Vue.directive('fetch',function(value){
value["url"].isLiteral = true;
var model = this.vm;
qwest.post(value["url"]).then(
    function(response){
        console.log(response);
        if (response["CODE"] == 1){
            console.log(response["RESULT"]);
            model.result = response["RESULT"];
            model.error = "";
        }else{
            model.result = "";
            model.error = response["ERROR"];
        }
    }
).catch(
        function(e,response){
            model.error = response["ERROR"];
        }
    );
})