如何在从服务器返回数据的函数内分配范围变量?

时间:2016-10-27 16:05:44

标签: angularjs

我有一个角度控制器功能。

在控制器末尾调用

console.log()。这是一个可以查看数据的函数。


scope.asyncInit = function() {
    scope.phoneData;
    dsc.In('module-agreements-lists').run('select_agreements_by_value').now('phone').then(function(res) {
        scope.phoneData = res.result;
    });
};

我应该从数据库返回数据并将其作为scope.phoneData变量。

问题在于,当我像这样使用它时:


scope.asyncInit = function() {
    scope.phoneData;
    dsc.In('module-agreements-lists').run('select_agreements_by_value').now('phone').then(function(res) {
        scope.phoneData = res.result;
        console.log(scope.phoneData);
    });
};

它显示从控制台日志中的服务器返回的数据,但它们在scope.asyncInit之外不可见。

以下代码中的控制台日志返回到控制台日志scope.phoneData为undefined。


scope.asyncInit = function() {
    scope.phoneData;
    dsc.In('module-agreements-lists').run('select_agreements_by_value').now('phone').then(function(res) {
        scope.phoneData = res.result;
    });
    console.log(scope.phoneData);

};

我错过了重要的事情吗?我不知道为什么它不能正常工作。

1 个答案:

答案 0 :(得分:1)

这是因为这是一个异步调用 对服务器的异步调用只会运行,而不是等待成功 所以代码继续,即使你还没有得到数据。

您使用.then()函数来执行您希望在成功后调用的内容。

这就是为什么它在第二种方法中记录'undefined'的原因。数据尚未从服务器到达。