获得一行Angularjs

时间:2015-11-09 06:30:09

标签: javascript angularjs

嗨我有一个简单的行,我试图显示总数。 在我的HTML中我有

 <tr ng-repeat="item in items">
        <td>{{item.name}}</td>
        <td ng-init="iTotal= iTotal + item.price">{{item.price}}</td>
    </tr>

    <tr>
        <td></td>
        <td>Total :</td>
        <td>Total:{{iTotal}}</td>
    </tr>

在我的控制器中我有

var vm=this;
vm.Itotal=0;

这基本上不会让我空白iTotal没有错误。 请让我知道如何修复它以获得结果。谢谢

3 个答案:

答案 0 :(得分:1)

如果您正在使用视图模型注释:

var vm=this;
vm.Itotal=0;

然后你应该像这样访问vm.Itotal

<td ng-init="controller.Itotal = controller.Itotal + item.price">{{item.price}}</td>

请注意您在视图中使用iTotal并在控制器中使用Itotal(我是大写)。

答案 1 :(得分:1)

您可以尝试这种简单的方法: Demo plunker

<强> HTML:

   <table>
 <tr ng-repeat="item in items">
        <td>{{item.name}}</td>
        <td >{{item.price}}</td>
    </tr>
    <tr>
        <td></td>
        <td>Total:{{iTotal}}</td>
    </tr>
    </table>

<强> JS:

   $scope.items=[{
       "id": 1,
       "price": 12,
   },
   {
       "id": 1,
       "price": 1,
    }];
    $scope.iTotal=0;
    $scope.items.forEach(function(i){
        $scope.iTotal= $scope.iTotal + i.price;
    })

答案 2 :(得分:0)

JSFiddle解释相同:(不是我创建的,从JSFiddle复制)

http://jsfiddle.net/J9Aj8/

angular.module("app", []).
   filter("sum", function sum$$factory() {
   return function sum$$filter(collection) {
     var sum = 0;
  _.forOwn(collection, function(value) {
      switch (typeof value) {
       case 'number': sum += value; break;
       case 'string': sum += (value >>> 0); break;
       default: // don't know what to do with this, maybe something else!
       break;
     }
  });
  return sum;
};
}).
controller("itemsCtrl", function() {
  var self = this;
  this.model = {};
  this.numbers = [
    36,
    72,
    80,
    101,
    9,
    42
  ];
  this.addNumber = function() {
    var value = self.model.newNumber;
    if (value === value && typeof value === 'number') {
      self.numbers.push(value);
      self.model.newNumber = NaN;            
    }
  };
});