2014-06-05 1 views
0

내 페이지를 조금 가볍게 만들고 싶습니다. 일부 옵션은 선택 옵션이어야하지만 사용자가 컨트롤을 터치하는 것처럼로드해야합니다. 어쩌면 초당 로딩 대화 상자를 표시하여 피드백을 줄 수 있습니다. Angular에서 어떻게 할 수 있습니까? 나는 ng-click과 ng-focus를 시도하여 모델 옵션 모집단을 트리거했지만 결코 실행되지 않습니다.컨트롤이 포커스를 얻었을 때 AngularJS로드 선택 옵션

<select name="Category" ng-model="selectedCategory" ng-options="item.name as item.name for item in  categories"> 
     <option value="" disabled selected>All Categories</option> 
    </select> 

답변

2

ng-focus. 그냥 빈 배열로 시작 $scope.categories 수 있도록하고 ng-focus 기능에 채울 :

$scope.categories = []; 
$scope.selectedCategory = {}; 

$scope.loadOptions = function() { 
    if ($scope.categories.length == 0) { 
    $scope.categories = [{ 
     name: 'option1' 
    }, { 
     name: 'option2' 
    }, { 
     name: 'option3' 
    }]; 
    } 
} 

HTML :

<select name="Category" ng-model="selectedCategory" 
    ng-options="item.name as item.name for item in categories" 
    ng-focus="loadOptions()"> 

Plunker

+0

내가 뭔가 잘못 초점을 처음했던 것 같아요. .. 나는 문제가있다. 데이터가로드 된 후 선택 영역이 새로 고쳐지지 않습니다. 선택을 클릭하고 다시 클릭해야합니다 ... 사용자 상호 작용없이 새로 고칠 수있는 쉬운 방법이 있습니까? – chrislhardin

+1

아, 예를 들어 외부 소스에서 옵션을로드하는 경우 드롭 다운이 확장되기 전에 제 시간에 해당 옵션이로드되지 않습니다. 거기에 할 일이 있는지 확실하지 않습니다. 그것은 브라우저 제한 (목록이 확장되는 동안 옵션을 다시 그리지 않음)과 같은 느낌입니다. [ui-select2] (https://github.com/angular-ui/ui-select2)와 같은 JQuery 기반 선택 상자를 조사해야 할 수도 있습니다. 그들은 동적으로 로딩 옵션 드롭 다운의 데모가 있습니다. – Jerrad

관련 문제