Javascript 错误:函数(…)未定义

Javascript 错误:函数(…)未定义,javascript,angularjs,Javascript,Angularjs,我有两个函数第一个从角度控制器开始,第二个从数据库加载状态,问题是因为JavaScript是异步的变量$scope.info.loadState在函数中使用时未定义,搜索时我找到函数.done如何解决此问题,但是现在,当启动控制器时,会出现以下错误错误:loadByIdAssetState(…)未定义 功能代码如下所示 angular.module('assetModule') .controller('assetEditCtrl', ['selectedService','assetRES

我有两个函数第一个从角度控制器开始,第二个从数据库加载状态,问题是因为JavaScript是异步的变量
$scope.info.loadState
在函数中使用时未定义,搜索时我找到函数
.done
如何解决此问题,但是现在,当启动控制器时,会出现以下错误
错误:loadByIdAssetState(…)未定义

功能代码如下所示

angular.module('assetModule')
  .controller('assetEditCtrl', ['selectedService','assetRESTService'
                           ,'assetStateRESTService','$location', '$modal' 
                           ,'$scope', assetEditCtrl]);

function assetEditCtrl (selectedService, assetRESTService, assetStateRESTService, $location, $modal, $scope) {
        $scope.file = {};
        $scope.data = {};
        $scope.info = {};
initCtrl();

function initCtrl() {
  $scope.info.selected = {};
  if(selectedService.getSelected() != undefined){
    $scope.file.asset = selectedService.getSelected();
    selectedService.setSelected(undefined);
    $scope.info.loadState = loadByIdAssetState($scope.file.asset.assetState_id)
    .done(function(state) {
      console.log(state);
      $scope.file.asset.stateName = state.state;
      return state;
    });
    console.log($scope.info.loadState);
    $scope.file.asset.stateName = $scope.info.loadState.state;
  }

}


function loadByIdAssetState(stateId) {
  assetStateRESTService.getByIdAssetStates(stateId)
    .then(function(state) {
      console.log(state);
      $scope.info.loadStateReady = true;
      return state;
    })
    .catch(function(error) {
      console.log(error);
    });

 }
}

getSelected
是一种返回所选资产的服务,该资产具有资产状态id,我希望名称处于此状态

看起来您忘记将
loadByIdAssetState
注入控制器,您必须这样做才能使用它。这样做:

 function initCtrl(loadByIdAssetState) {
    $scope.info.loadState = loadByIdAssetState($scope.file.asset.assetState_id).done(function(state) {
      console.log(state);
      $scope.file.asset.stateName = state.state;
      return state;
    });
    console.log($scope.info.loadState);
    $scope.file.asset.stateName = $scope.info.loadState.state;
}

你能提供完整的代码吗?我编辑代码,现在它只是一个赋值谢谢你的回答,但是如果
loadByIdAssetState
是在同一个控制器中定义的,为什么我要传递参数?如果我传递函数hw param get以下错误
loadByIdAssetState不是一个函数
你将不得不显示更多的代码,因为我们看不到全貌。我用完整的控制器编辑了问题,问题的表述很糟糕,请道歉