【问题标题】:Pass data from service to controller将数据从服务传递到控制器
【发布时间】:2014-01-28 20:13:55
【问题描述】:

我正在尝试将数据从服务传递到 Angular js 中的控制器,代码如下:

.controller('lista',function($scope,cetrams){
    $scope.hola="This is it";

    var test;
    var testfn = function(){
        test = 'Lala';
    };

    cetrams.success(function(data){
        testfn();
        test = data;
        console.log('Inside service: '+test);
    });

    console.log('Inside controller: '+test);

})

服务正在运行,因为我得到了承诺并且成功的函数被执行,但我无法将该函数之外的变量获取到控制器范围。

【问题讨论】:

  • 我无法回答我自己的问题,但我已经弄清楚了,发生的情况是来自外部的 console.log 顺序运行而不等待成功的承诺,但实际的范围变量正在有效地更新。

标签: javascript angularjs


【解决方案1】:

如果您希望该值在最后一行可用

console.log('Inside controller: '+test);

那你就错了。由于代码的异步特性,最后一行将在服务返回数据之前执行。

您的逻辑应该在success方法中完成或使用$scope.$watch观察测试变量的变化

【讨论】:

  • 谢谢,发帖后我意识到了,并尝试回答问题,但我不能,因为我没有足够的积分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多