2015-09-13 22 views
5

Tôi có mã sau đây. Tôi đang cố gắng đặt tùy chọn mặc định làm tùy chọn cuối cùng trong hộp chọn. Nếu tôi hardcode độ dài trong ng-init nó hoạt động. ng-init="mySelect = 3" Nhưng không phải với ng-init="mySelect = myData.length-1"Làm cách nào để đặt tùy chọn chọn góc mặc định làm tùy chọn cuối cùng?

Mọi ý tưởng về cách đặt tùy chọn cuối cùng?

$scope.myData = ['a','b','c']; 

<select class="form-control" ng-init="mySelect = myData.length-1" ng-model="mySelect"> 
    <option ng-repeat="$index in myData" value="{{ $index }}" >Select This Option #({{ $index+1 }})</option> 
</select> 

Trả lời

1

Tôi có thể đạt được điều này bằng cách sử dụng ng-được chọn trong thuộc tính tùy chọn.

ng-selected="{{$index==myData.length-1}}" 
+0

Tôi giả sử bạn muốn mô hình 'mySelect' phản ánh thực tế là mục cuối cùng được chọn, không? Cách tiếp cận này (hoặc cách tiếp cận được đánh giá cao ở trên) sẽ không *** đạt được điều đó ... Chỉ cần chỉ định 'mySelect' làm mục mục cuối cùng. –

+0

@NewDev Rất muốn xem giải pháp nếu trường hợp đó xảy ra. Cảm ơn các đầu vào! – KingKongFrog

5

Sử dụng ng-selected$index truy cập chúng tôi có điều kiện có thể thiết lập ng-selected="true" cho lựa chọn cuối cùng bằng cách kiểm tra rằng $index bằng với chỉ số cuối cùng của myData mảng của bạn (myData.length - 1). Ví dụ:

<option ng-selected="{{$index === myData.length - 1}}"></option> 

Hoặc như @ wickY26 chỉ ra, chúng ta cũng có thể thực hiện điều này bằng $last:

<option ng-selected="$last"></option> 

Bạn tuy nhiên nên có một cái nhìn tại ng-options directive mà là một thực hiện cụ thể của hành vi ng-repeat nhưng đối với <select> yếu tố:

<select 
    class="form-control" 
    ng-init="mySelect = myData[myData.length - 1]" 
    ng-model="mySelect" 
    ng-options="data for data in myData"> 
</select> 
+3

ng-selected = "$ last" sạch hơn nhiều ... –

+0

Bạn nói đúng! Tôi chưa từng thấy '$ last' trước đây. Tôi sẽ cập nhật câu trả lời của mình. Cảm ơn! – sdgluck

1

Hãy thử điều này:

<select class="form-control" ng-model="mySelect" 
ng-options="item for item in myData" ng-init="mySelect = myData[myData.length -1]"> 
</select> 
1

Toàn bộ điểm góc (hoặc các khung MVVM khác) là bạn có thể lý giải điều khoản của ViewModel và có Chế độ xem bị ràng buộc phản ánh nó.

Điều đó có nghĩa là nếu bạn cần thứ gì đó được chọn hoặc một số giá trị đặt trước <input type="checkbox"> - chỉ cần gán trạng thái mong muốn cho ViewModel.

Trong trường hợp của bạn, hãy gán mySelect cho những gì bạn cần ViewModel được chỉ định theo mặc định. Và Chế độ xem sẽ theo sau.

$scope.myData = ['a','b','c']; 
$scope.mySelect = $scope.myData[$scope.myData.length - 1]; // last value 
<select ng-model="mySelect"> 
    <option ng-repeat="item in myData" value="item">{{item}}</option> 
</select> 

Không liên quan đến câu hỏi, nhưng nó tốt hơn để sử dụng ng-options thay vì ng-repeat, nhưng cùng một ý tưởng áp dụng:

<select ng-model="mySelect" 
     ng-options="item for item in myData"> 
</select> 

Chỉ cần sử dụng ng-selected không làm thay đổi mô hình cơ bản, đó là điều cuối cùng quan trọng trong ứng dụng Góc.

Các vấn đề liên quan