在 angular js 中正确调用函数的困难

萨基

我有一个通过“app.factory”附加到 angular app 模块的功能,其中包含某些 http 请求。该函数在控制器中被调用,并且从函数返回的数据被分配给控制器中的作用域变量。

问题是首先执行控制器,然后执行函数中的 http 请求,因此无法将来自 http 请求的数据捕获到范围变量中。如何纠正。

function resourceapp.factory('dataService', function($http){
  var data = {};
  data.EnterprisePrograms = [];
  data.Resources=[];
  data.Skills=[];
  data.Allocations=[];

  Execution = function($http) {
    $http.get('http://localhost:8080/api/enterpriseProgram')
      .then(function(resources) {
        data.EnterprisePrograms=resources.data;
      });

    $http.get('http://localhost:8080/api/resource')
      .then(function(resources) {
        data.Resources=resources.data;
      });

    $http.get('http://localhost:8080/api/skill')
      .then(function(resources) {
        data.Skills=resources.data;
      });

    $http.get('http://localhost:8080/api/allocation')
      .then(function(allocation) {
        data.Allocations = allocation.data;
      });
  }

  return data;
});

控制器

resourceapp.controller('AllocationList', function($scope, dataService) {
  $scope.allocationList = dataService.Allocations;
});
空头

它应该是这样的:

在工厂中:创建一个方法来返回承诺。

 resourceapp.factory('dataService', function($http){
    var data = {};

    data.getEnterprisePrograms = function($http){
        return $http.get('http://localhost:8080/api/enterpriseProgram');
      }

    data.getResourceData = function($http) {   
        return $http.get('http://localhost:8080/api/resource');
      }

    data.getSkillData = function($http) {
       return $http.get('http://localhost:8080/api/skill');
      }

    data.getAllocationData = function($http) {   
       return $http.get('http://localhost:8080/api/allocation');
    }

    return data;
});

在 Controller 中,调用工厂方法来获取承诺并使用$q.all()

 resourceapp.controller('AllocationList', function($scope, dataService, $q){
              var allocationPromise = dataService.getAllocationData();
              var skillPromise= dataService.getSkillData();
              // other promise

 $q.all([allocationPromise,skillPromise, ..other promise]).then(function (result) {
              $scope.allocationData = result[0].data;
             $scope.skillData = result[1].data;
              // other data
          })
 });

$q.all()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

表单无法在angular js中正确发布

来自分类Dev

表单无法在angular js中正确发布

来自分类Dev

模板内的函数被多次调用(Angular JS)

来自分类Dev

Angular js工厂调用“不是函数”

来自分类Dev

Angular.js无限循环调用函数

来自分类Dev

Angular JS工厂调用“不是函数”

来自分类Dev

Angular.js无限循环调用函数

来自分类Dev

渲染Angular指令后调用js函数

来自分类Dev

带有括号的Q.js“ then”困难调用函数

来自分类Dev

Angular js .then不是函数

来自分类Dev

如何在Angular JS APP的config.js中正确注入adalprovier

来自分类Dev

Angular.js-首次调用后函数开始递归调用

来自分类Dev

Angular JS正确的工厂结构

来自分类Dev

如何在Angular.js中正确配置提供程序服务

来自分类Dev

如何在Angular.js中正确配置提供程序服务

来自分类Dev

用JavaScript调用Angular JS

来自分类Dev

使用Angular JS调用http

来自分类Dev

控制器中的Angular.js调用指令函数

来自分类Dev

Angular.js在指令中调用jquery函数

来自分类Dev

Angular.JS onclick函数仅在首次单击时调用

来自分类Dev

从Angular应用程序调用Node.js中的函数

来自分类Dev

不属于范围的模板中的Angular JS调用函数

来自分类Dev

使用其参数在angular js中调用函数

来自分类Dev

Angular.js在指令中调用jquery函数

来自分类Dev

Angular-加载所有JS后的调用函数

来自分类Dev

如何从内容页面Angular JS(Ionic Framework)调用函数?

来自分类Dev

在Angular中正确使用TestBed

来自分类Dev

Angular JS:如何在Angular指令中从控制器的链接内部调用函数

来自分类Dev

Angular JS:如何在Angular指令中从控制器的链接内部调用函数

Related 相关文章

热门标签

归档