奇怪的AngularJS错误

时间:2014-08-01 18:26:47

标签: javascript angularjs angular-services

我是AngularJS编程的新手,正在研究一个示例应用程序。我从服务中返回一个对象时遇到了一个问题。请考虑在我的自定义服务中使用以下代码:

this.getCompanyInfo = function(companyID)
{
    console.log( companyID );
    angular.forEach( companyInfo, function( coInf ) {
       if( coInf.companyID == companyID )
       {
           console.log(coInf);
           return coInf;
       }
   })
}

在此代码中,companyInfo是一个包含公司信息的数组,每个公司都由一个对象表示。第二个console.log显示了这个:

Object {companyID: "CHCL", companyName: "Chilime Hydropower", stockPriceTrend: Array[4]}

在我的控制器中,我有这个:

$scope.companyInfo = dataServices.getCompanyInfo( $routeParams.companyID);
console.log($scope.companyInfo);

但是在这里,console.log表示“未定义”。

我不知道我一直在做什么,任何帮助都将受到高度赞赏!

的问候。

2 个答案:

答案 0 :(得分:2)

您只是从forEach的迭代器函数参数(不是来自getCompanyInfo)返回,它仍然会继续。但是您需要从getCompanyInfo函数返回实际值。你可以使用一个简单的for循环,并在找到匹配后返回值。

this.getCompanyInfo = function(companyID)
{
    var cInfo, i, l;
    for(i=0,l=companyInfo.length; i<l;i++){
        if((cInfo = companyInfo[i]).companyID === companyID ){
          return cInfo ;
       }
    }

}

从迭代器函数返回不会破坏使用angular.forEach的循环。循环仍然会继续。

答案 1 :(得分:1)

将功能更改为

this.getCompanyInfo = function(companyID)
{
   var coInfo;
    console.log( companyID );
    angular.forEach( companyInfo, function( coInf ) {
       if( coInf.companyID == companyID )
       {
           console.log(coInf);
           coInfo = coInf;
       }
   })

   return coInfo;

}

您没有从函数返回值,而是从forEach返回值,并且不会从函数返回值。

它与angular无关,顺便说一句。

修改

你也可以使用像lodash / underscore这样的库来搜索/过滤功能