1

배열을 사용하여 ng-options으로 목록을 채우고 선택한 항목에 바인딩 된 속성이 있습니다. 배열을 삭제 한 후에 바운드 변수 myObject.selectedItem은 마지막으로 선택한 항목의 값을 유지합니다.배열을 지운 후에 ng-options bound 변수가 업데이트되지 않습니다.

HTML :

<select ng-model="myObject.selectedItem" ng-options="item.Id as item.Name for item in myArrayList | orderBy:'Id'" required> 
    <option value="">Select something</option> 
</select> 

JS :

$scope.myArrayList = [ { Id: 1, Name: "Item 1" }, { Id: 2, Name: "Item 2" } ]; 
$scope.myObject = { selectedItem: null }; 

... 항목이 선택한 후 :

$scope.myArrayList.length = 0;    // Clears the array 
console.log($scope.myObject.selectedItem); // Prints: 2 

을이 정상적인 행동인가?

답변

1

... .selectedItem에 저장된 값이 저장되며 원래 값의 출처에 바인딩되지 않습니다.

그렇습니다. 정상적으로 예상되는 동작입니다.

2

정상적인 동작입니다.

ng-model은 보조 배열에 의해 렌더링 된 옵션과는 별도의 바인딩입니다. 따라서 ng-options의 소스를 변경해도 ng-model 바운드 속성에 영향을 미치지 않습니다.

배열을 비우는 경우 배킹 배열 길이를 설정 한 후에 myObject.selectedItem도 null로 설정해야합니다. 자주 작동 이런 종류의 일을 예정하고 동적으로 myObject.selectedItem을 업데이트하려면

, 당신은 항상 myArrayList에 감시자를 등록하고 0

에 길이 업데이트하면 null로 selectedItem을 설정할 수 있습니다