2014-11-12 2 views
0

나는 다음과 같은 AngularJS와 모델이 : 나는 N 사용자와이 배열을 채우는, 한 사용자가 id=1이있는 경우자바 스크립트/AngularJS와는 배열의 속성을 수정

$scope.Model = { 
    Users : [{ 
     UserId: '', 
     FirstName: '', 
     LastName: '' 
    }], 
    Products :[{ 
     ProductId: '', 
     Price: '' 
    }] 
}; 

, 어떻게 내가 (id=1으로) 특정 사용자를 업데이트 할 수 있습니다 재산 LastName?

그래서 예를 들어 나는 새로운 AngularJS와 모델 얻을 것이다 경우 :

$scope.UserToUpdate ={ 
    UserId: 1, 
    LastName: "Smith" 
}; 

내가 루프하려는 $scope.Model 배열을하고 id=1하지만 단지 FirstName 속성을 사용하여 사용자를 업데이트합니다.

P. 사용자 경우 검사를 추가 할 수 있습니다 : 그것은 $scope.Model.Users[0] 또는 $scope.Model.Users[1] 또는 $scope.Model.Users[10] 또는 $scope.Model.Users[N]에서에서 할 수 있습니다 기본적으로 그렇다 배열의 대상 사용자 개체 ... BTW

+0

데이터 구조를 기반으로 Model 객체 LastName 속성을 업데이트 위의 코드는 정말 이상하다, 당신은 배열에있는 객체의 일부 어레이 당 하나의 객체가 있습니다. .. hmmm – harishr

+0

@ harish : 유감스럽게도 –

+0

$ scope.model을 입력 할 때 실수가있었습니다. 사용자는 하나의 객체 또는 여러 객체를 가질 것입니다. ?? – harishr

답변

3

.. 존재한다.

var matchedUsers = $filter('filter')($scope.Model.Users, { UserId: $scope.UserToUpdate.UserId }); 
if (matchedUsers.length > 0) { 
    matchedUsers[0].LastName = $scope.UserToUpdate.LastName; 
} 

을 그리고이 두 번째 솔루션 컨트롤러 선언에 매개 변수로 $ 필터 서비스를 추가하는 것을 잊지 마세요 : 여기에 $ 필터를 사용하여 다른 솔루션입니다.

0
$scope.UserToUpdate = 
    $scope.Model.Users.filter(function(user) { return user.FirstName == "test"; })[0]; 

어떤 위치 I은 모른다 사실 harish의 대답은 너무 뭔가에 : 당신은

for (var i = 0; i < $scope.Model.Users.length; i++) { 
    if($scope.Model.Users[i].UserId === $scope.UserToUpdate.UserId) { 
     $scope.Model.Users[i].LastName = $scope.UserToUpdate.LastName; 
     break; 
    } 
} 

편집 사용자의 목록을 통해 단지 루프 수

+0

그래야 기본적으로 실제 사용자 객체를 반환 할 것입니다. 제 위치에서 어떻게 업데이트합니까? –

+0

"wanted"개체에 대한 참조가 있습니다. 이제 javascript를 통해 업데이트하거나 ng-model이있는 템플릿을 추가하여 입력을 통해 업데이트 할 수 있습니다. –

0

당신은 $ 필터는 $ 필터 ('필터') here

0

이 시도에 대해 더 읽어

 var user = $filter('filter')($scope.Model.Users, 'UserId == 1'); 

을 사용할 수 있습니다! 근무 데모 http://plnkr.co/edit/scyV79HqqA7nOG9h4ezH?p=preview. 콘솔 로그를 확인하십시오.

angular.forEach($scope.Model[0].Users, function(value1, key1) { 
    var i = 0; 
    angular.forEach(value1, function(value, key) { 
     if (key == 'UserId' && $scope.UserToUpdate.UserId == value) { 
     $scope.Model[0].Users[i].LastName = $scope.UserToUpdate.LastName; 
     } 
     i++; 
    }); 

    }); 

UserToUpdate 객체 (ID = 1)

관련 문제