2014-09-02 3 views
0

이 질문은 매우 사소한 내용 일 수 있지만 그 말은 나를 괴롭 히게합니다. 동적으로 추가 된 페이지에서 n 개의 요소를 가질 수 있습니다. 이 모든 것들은 그들에게 동일한 옵션을 가질 것입니다.동일한 ng 옵션 집합을 사용하여 둘 이상의 선택 요소를 추가하는 방법

<select class="form-control action" 
     data-ng-options="action.name for action in statementData" 
     data-ng-model="selectedRules.statementOptions" 
> 

이것은 이러한 요소 중 하나에 대한 마크 업입니다.

문제점 : 한 선택 요소에서 무언가를 변경하거나 선택하면 다른 모든 요소가 업데이트됩니다. 나는 그것을 원하지 않는다. 이것은 같은 모델 객체의 coz 일 수 있습니다. 하지만 모델을 삭제하면 데이터가 없습니다.

답변

0

단순히 변수를 복사하면 참조로 전달되고 다른 변수로 변경됩니다.

angular.copy()를 사용하여 두 개의 변수를 만들고 두 가지 선택 옵션에 사용하십시오. 다음과 같은

시도 뭔가 :

<!-- First select --> 
<select class="form-control action" 
    data-ng-options="action.name for action in statementData" 
    data-ng-model="selectedRules.statementOptions"> 

<!-- Second select --> 
<select class="form-control action" 
    data-ng-options="action.name for action in statementData1" 
    data-ng-model="selectedRules.statementOptions"> 

컨트롤러에서 당신이해야 할 것입니다.

$scope.statementData1 = angular.copy(statementData); 

angular.copy()를 사용하면 $ scope의 두 변수에 대해 별도의 복사본이 만들어집니다.

+0

심지어 angular.copy를 사용하려고 생각했습니다. 하지만 여기에있는 문제는 동적으로 추가되는 수백 개의 이러한 선택 요소가있을 수 있으며 페이지에 얼마나 많은 요소가 나타날지 모르겠다는 것입니다. 사용자는 단추를 클릭하여 필요한 횟수만큼 이러한 요소를 추가 할 수 있습니다. – Vikram

+0

아마도 select 문에서 새 모델을 전달할 방법이있을 수 있습니다. 그럴 수도 있습니다. 그러나 나는 방법을 이해할 수 없다. – Vikram

+0

하나의 논리는 지금 생각할 수 있습니다 - 범위에 배열을 만듭니다. inital statementData 변수를 푸시합니다. 그런 다음 사용자가 새로운 선택을 만들기 위해 버튼을 클릭하면 statementData1과 같은 런타임에 새 복사본을 만들어 배열로 푸시합니다. 따라서 모든 사용자 선택 값은 배열로되어 있으므로 비즈니스 요구 사항에 따라 사용할 수 있습니다. –

0

다른 구성 요소에 원래 모델을 복사합니다. 예를 들어, angular.copy()를 사용하십시오.

+0

심지어 angular.copy를 사용하려고 생각했습니다. 하지만 여기에있는 문제는 동적으로 추가되는 수백 개의 이러한 선택 요소가있을 수 있으며 페이지에 얼마나 많은 요소가 나타날지 모르겠다는 것입니다. 사용자는 단추를 클릭하여 필요한 횟수만큼 이러한 요소를 추가 할 수 있습니다. – Vikram