【问题标题】:How do i use $scope.compdata throughout the controller [duplicate]我如何在整个控制器中使用 $scope.compdata [重复]
【发布时间】:2017-07-31 09:19:47
【问题描述】:

我无法在控制器外部访问变量 $scope.compdata。提前致谢。

  var compdata;
  $scope.fetchCompanies = function() {
   var deferred = $q.defer();
   Company.get({
      arg1 : 'list',
      arg2 : 14
    }, function(success) {
      $scope.compdata = success.data;
      deferred.resolve(success.data); //Edited here
    });
    return deferred.promise;
  };

  $scope.fetchCompanies()
    .then(function(data) { // and this block
      $scope.compdata = data; //Added
      console.log("outside : ",  $scope.compdata) //success
    });

console.log("outside : ",  $scope.compdata); //undefined

【问题讨论】:

  • 这是因为异步执行。该值将在 promise 的解析之外未定义
  • @bhavani 您将无法访问外部数据 $scope.compdata,因为您在异步调用(即 ajax 调用)中对其进行了设置。通过在外部访问 $scope.compdata 您到底想做什么?请解释一下场景。

标签: angularjs ionic-framework hybrid-mobile-app


【解决方案1】:

尝试以下方法:将 compdata 变量声明为 -

$scope.compdata = '';

【讨论】:

  • 谢谢,已经试过了,但是没用。
  • 好的...然后尝试将现有变量分配给您的控制器,并调用 as -var compdata ;是全局变量,所以 compdata = $scope.compdata; console.log("外部:",compdata);
  • @Ganesh 稍后 console.log 将在控制器实例化后立即被调用,这将再次未定义,因为服务承诺尚未解决
  • 是的,它的未定义
  • 我的意思是 - $scope.fetchCompanies() .then(function(data) { $scope.compdata = data; compdata = $scope.compdata; }); console.log("外部:", $scope.compdata);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多