2014-04-16 2 views
0

나는이반복 항목은

<select id="categoryListBox" 
data-ng-model="list" 
data-ng-change="updateCategory(item)" 
data-ng-options="item as item.categoryId[0].name+' : '+item.name for item in list"  
class='form-control' > 
    <option value="" style="display:none;"> current category </option> 
</select> 

을 그리고 updateCategory이 공격 할 때마다, 나는 선택 항목되어야 매개 변수를 console.log. console.logundefined으로 읽습니다.

console.log 모델 $scope.list이고 내가 선택한 item으로 대체됩니다.

무슨 일 이니? 여기

$scope.updateCategory = function(item){ 
    console.log('updateCategory hit'); 
    console.log('list is now',$scope.list) 
    console.log(item); 
}; 

이 기능을 감싸

updateCategory hit

list is now [what item should be]

undefined

HTML로 나오는 updateCategory 기능입니다 이상이있는 경우 ng-hide

답변

0

ng-change은 (는) ng-options과 다른 범위에 있습니다. 그것이 ng-change 전에 업데이트되기 때문에 이론적으로, 당신은 기본적으로 그냥 모델에 전달해야

updateCategory(list) 

을하지만, 당신이 보는대로 모델과 NG-옵션이기 때문에, 당신은 다음 목록을 우선합니다. 요약하자면, 모델이 선택한 항목이 무엇으로 설정됩니다 -

<select id="categoryListBox" 
    data-ng-model="selected_item" 
    data-ng-change="updateCategory(selected_item)" 
> 

은 그래서 : 그래서 당신이해야 할 일, 할 뭔가 다른 모델을 가지고있다. 모델을 목록과 동일한 것으로 설정하면 선택시 선택한 항목이 목록이됩니다. 아마도 당신이 원하는 것이 아닙니다. 따라서 모델을 목록과 다른 변수로 설정하면 모델을 변경 기능으로 전달할 수 있습니다.