总函数不返回值

时间:2015-06-17 21:21:59

标签: javascript arrays angularjs

所以我可以很好地访问我的数组值:

 $scope.checkVal = myArray[0].Value;

我想总结一下我的数组中的值的总和:

$scope.sumByYear = function () {
    var yearTotal = 0;
    for (var i = 0; i < myArray.length; i++) {
        yearTotal += myArray[i].Value;
    }
    return yearTotal;
}

这是我的Html指令:

<div ng-app="myApp" ng-controller="myCtrl">
    <div> {{sumByYear | currency}} </div>
</div>

没有返回任何内容。我错过了什么?

3 个答案:

答案 0 :(得分:3)

由于sumByYear是一个函数,您需要调用它:

<div>{{sumByYear() | currency}}</div>

但是,如果可能的话,最好在控制器中预先计算动态值,并避免在HTML中执行函数。

答案 1 :(得分:3)

sumByYear是函数指针而不是值,所以如果你想获得一个值,你需要调用它。

HTML(在我的示例中,请注意yearTotal而不是sumByYear):

<div ng-app>
  <div ng-controller="ClickToEditCtrl">
    <div ng-hide="editorEnabled">
      {{title}} {{ yearTotal | currency }} 
      <a href="#" ng-click="editorEnabled=!editorEnabled">Edit title</a>
    </div>
    <div ng-show="editorEnabled">
      <input ng-model="title">
      <a href="#" ng-click="editorEnabled=!editorEnabled">Done editing?</a>
    </div>
  </div>
</div>

JS(再次注意yearTotal而不是sumByYear):

function ClickToEditCtrl($scope) {
  $scope.title = "Welcome to this demo!";
  $scope.yearTotal = 0;
  var myArray = [1,2,3,4,5];    
    for (var i = 0; i < myArray.length; i++) {
       $scope.yearTotal += myArray[i];
    }               
}

Example on jsfiddle

答案 2 :(得分:2)

sumByYear必须为sumByYear()。 sumByYear是一个函数