2015-10-20 30 views
8

dizisi tüm nesneleri bir özellik değerini güncellemek nesneleri dizisini olması gerekir:benim angularjs uygulamasında nesnelere

$scope.rowData = [{ 
    "expNum": "678",  
    "itemHr": "10", 
    "highRe": "C" 
    }, { 
    "expNum": "978",  
    "itemHr": "3", 
    "highRe": "Y" 
}] 

Şimdi bir tık olayı ben güncellemeniz gerekir 'itemHr' Dizideki her nesnenin bazı yeni değerlere diyelim (25). Yeni bir Array nesnesi oluşturmak istemiyorum, sadece mevcut olanı değiştir. Angularjs yardımcı programlarını ya da altyazı kitaplığı için kullanabilirsek, her ikisi de benim için iyi. Biri bana bununla ilgili yardım edebilir mi.

cevap

16

Neden vanila js with loop için?

for(var i = 0; i<$scope.rowData.length; i++) 
{ 
    $scope.rowData[i].itemHr = 25; 
} 

veya alt

_.each($scope.rowData, function(item){ item.itemHr = 25;}); 

veya köşeli

angular.forEach($scope.rowData,function(item){ item.itemHr = 25; }); 

var app = angular.module("myApp", ['ui.bootstrap']); 
 
    
 
    app.controller("maincontroller", function($scope) { 
 
     $scope.rowData = [{ 
 
      "expNum": "678",  
 
      "itemHr": "10", 
 
      "highRe": "C" 
 
      }, { 
 
      "expNum": "978",  
 
      "itemHr": "3", 
 
      "highRe": "Y" 
 
      }]; 
 
     $scope.update = function(){ 
 
      for(var i = 0; i<$scope.rowData.length; i++) 
 
      { 
 
      $scope.rowData[i].itemHr = 25; 
 
      } 
 
      
 
     } 
 

 
    });
<!doctype html> 
 
<html lang="en" ng-app="myApp" ng-controller="maincontroller"> 
 

 
<head> 
 

 
    <meta charset="UTF-8"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 
 
    <script src="script.js"></script> 
 
    <script data-require="[email protected]" data-semver="0.12.0" src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.12.0.min.js"></script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
</head> 
 
<body> 
 
    <div> 
 
      <table class="table table-hover table-bordered" > 
 
       <tbody > 
 
        <tr ng-repeat="row in rowData"> 
 
        <td> 
 
         {{row.expNum}} 
 
        </td> 
 
        <td> 
 
         {{row.itemHr}} 
 
        </td> 
 
        <td> 
 
         {{row.highRe}} 
 
        </td> 
 
        </tr> 
 
       </tbody> 
 
      </table> 
 
    </div> 
 
    
 
    <input type="button" class="btn btn-danger" ng-click="update()" value="Update ItemHr to 25"> 
 
</body> 
 
</html>

+0

@dboskovic açısal – Artiom

+0

için teşekkürler Artiom, ben item.itemHr = 25 verdiğimde cevabı kabul ettim ama küçük bir notu kabul ettim, eğer item [itemHr] = 25 verirsem işe yaramıyor, iyi çalışıyor –

+0

@MadasuK neden senin için çalışmadığını anlamıyorum. Örneği kontrol edin – Artiom

2
angular.forEach($scope.rowData, function(item,index){ 
    item["itemHr"] = "25"; 
}) 
İlgili konular